錯誤的學習編碼語言觀點:語言語法不用記,多練習就可以了。 應該是死記住,然後加強練習以免忘記。以及在練習中加強理解。試著想「為什麼是這樣的語法習慣」。
php提供了8種資料型別。4種是標量型(單值)的:整型、浮點型、字串和布林值;兩種是複合型(集合)的:陣列和物件。兩種特殊型別:資源和null
靜態變數在所有對該函式的呼叫中是共享的,而非靜態變數會在函式結束時被銷毀。
巢狀宣告並沒有限制內部定義函式的可見性。除非外部函式被呼叫,否則內部函式無法被呼叫。
字串的定義:
字串可以是任意長度的字串行。字串直接量用單引號或雙引號分隔。
變數用雙引號括起來,單引號中的變數符號不解析。
測試兩個字串是否相等,使用==比較操作符: if($a==$b)
使用is_string()函式測試乙個值是否為字串:if(is_string($x))
php提供了操作符和函式來對字串進行比較、拆分、合併、查詢、替換和去除首尾空格,也有許多特定的字串函式來處理http、html和sql編碼。
變數的替換:
有兩種方法把變數替換到字串中:
1、雙引號包含
$who='kilroy';
$where='here';
echo "$who was $where";
2、大括號包含。這種方法可以用於消除歧義或替換陣列查詢。大括號的經典作用是把變數名從周圍的文字中分隔出來。
$n=12;
echo "you are the th person";
you are the 12th person
如果沒有大括號的話,php就會嘗試列印出變數$nth的值。
和一些shell環境不同,在php字串中變數不會重複解析,而只處理在雙引號字串中的解析,然後把其結果作為字串的值。
$bar='this is not printed';
$foo='$bar';//單引號
print("$foo");//雙引號
$bar
用單引號括起來的字串並不替換變數:
$name='fred';
$str='hello,$name';//用單引號括起來
echo $str;
hello,$name
特殊符號轉義:
在用單引號括起來的字串中唯一可用的轉義序列是\'(把單引號放在用單引號括起來的字串中)、\\(把乙個反斜槓放在用單引號括起來的字串中)。任何其他的反斜槓只能被解釋為乙個反斜槓:
$name='time o\'reilly'; //轉義的單引號
echo $name;
time o'reilly
$path='c:\\windows'; //轉義的反斜槓
echo $path;
c:\windows
$nope='\n'; //不是轉義序列
echo $nope;
\n
用雙引號括起來的字串將會進行變數解析並且允許使用許多轉義序列。\"(雙引號)、\n(換行符)、\r(回車)、\t(製表符)、\\(反斜槓)、\$(美元符號)、\、\[、\](左右大括號與中括號)、\0 throuth \777(用八進位制表示的ascii字元)、\x0 through \xff(用十六進製制表示的ascii字元)
如果在用雙引號括起來的字串中發現乙個未知的轉義序列,就忽略這個轉義序列(如果警告級設定為e_notice,就會為這樣的未知序列產生乙個警告):
$str="what is \c this?"; //未知的轉義序列
echo $str;
what is \c this?
字串的列印:有4種方法可以向瀏覽器傳送輸出內容。echo結構讓你一次輸出許多值,而print()只能輸出乙個值。printf()函式通過把值插入到模板中來建立乙個格式化的字串。print_r()函式利於除錯——它用更容易讀懂的方式來列印陣列、物件和其它東西的內容。 echo的大部分行為看起來像是乙個函式,但其實echo是乙個語言結構(language construct)。這意味著可以省略小括號,所以下面兩個語句是等價的:
echo "printy";
echo ("printy"); //也是合法的
可以通過逗號分隔來指定列印多個項:
echo "first","second","third";
firstsecondthird
在嘗試echo多個值時,使用小括號會產生語法錯誤:
echo("hello","world"); //這是乙個語法錯誤
因為echo並不是真正的函式,所以不可以把它作為表示式的一部分使用:
if(echo("test"))
通過使用函式print()或printf(),很容易補救這種錯誤。
print():函式print()傳送乙個值(它的引數)給瀏覽器。如果字串成功顯示則返回true,否則返回false(例如,使用者在頁面提交之前按下stop按鈕)
if (!print("hello,world"))
hello,world
printf():函式printf()通過把值傳入到模板中(即定義好的字串格式)來輸出乙個字串。它源自標準c庫中的同名函式。
函式sprintf()和printf()的引數相同,但只是返回生成的字串而不列印出來。這可以讓你把字串儲存到乙個變數中供稍後使用:
$date=sprintf("%02d/%02d/%04d",$month,$day,$year);//現在我們可以在任何乙個需要日期的地方將型別說明符%的替換成$date的值。
print_r()結構可以聰明地顯示傳給它的東西,而不是像echo和print()那樣把所有的都轉換為字串。使用print_r(),字串和數字都簡單地列印出來,而陣列則以括起來的鍵和值得列表形式顯示,並以array開頭。
在陣列中使用print_r()可以將移動內部的迭代器指標指到陣列裡最後乙個元素的位置。
訪問單個字元:
函式strlen()返回字串中的字元數,即字元長度:
$string='hello,world';
$length=strlen($string); //$length為12
可以在字串中使用字串偏移量語法來定位單個字元:
$string='hello';
for($i=0;$i}the 0th character is h
the 1th character is e
the 2th character is l
the 3th character is l
the 4th character is o
整理字串
通常,我們從檔案或使用者得到的字串在使用前需要整理(cleaning)。原始資料的兩個普遍問題是沒用的空白符號(如空格、換行)的存在和不正確的字母大小寫。
刪除空白符
可以使用函式trim()、ltrim()、rtrim()刪除字串開頭或結尾的空白符(whitespace):
$trimmed=trim(string[,charlist]);
$trimmed=ltrim(string[,charlist]);
$trimmed=rtrim(string[,charlist]);
trim()返回刪除首尾空白的字串。ltrim()(l是指left) 只刪除字串開頭的空白。rtrim()(r是指right)只刪除字串末尾的空白。可選引數charlist是乙個指定所有要刪除字元的字串。預設情況下要刪除的字元有:空格(" ")、製表符("\t")、換行("\n")、回車("\r")、字元("\0")、縱向列表符("\x0b")
改變大小寫
php有一些函式用於改變字串的大小寫:strtolower()和strtoupper()操作整個字串,ucfirst()只操作字串的第乙個字母,ucwords()則操作字串中每個單詞的第乙個字母。每乙個函式都把字串作為引數來執行,並適當地改變大小寫,然後返回字串的拷貝。例如:
$string1="fred flintston";
$string2="barney rubble";
print(strtolower($string1)); //fred flintston
print(strtoupper($string1)); //fred flintston
print(ucfirst($string2)); //barney rubble
print(ucwords($string2)); //barney rubble
PHP字串函式應用
判斷字串是否亂碼 json encode 運用 json encode string false 來判斷。如果字串中含有亂碼,json encode該字串就會返回false將乙個url中的資料解析成陣列 parse str 函式 查詢字串 str receipt no 201908055 payme...
json 字串 簡單應用
web開發中傳輸物件經常使用json字串,表單提交,ajax 請求以及後台返回的常常都是json字元,可以利用別人封裝好的json字元操作方法,怕導包麻煩也可以自定義一些方法,只要滿足自己需求即可,下面是我在專案中用到的乙個很簡單的json操作方法 1.先定義了乙個要傳輸的 物件 玩家部隊物件 fu...
字串應用
define crt secure no warnings include include sprintf的作用 生成乙個指令,把他對映到字串裡,對他初始化 void main1 int num char op 30 scanf d s num,op sprintf str,for l i in 1...