php數據類型(二)

4、字符串

一個字符串就是由一系列的字符組成。一個字符佔一個字節,一個字節8位,因此一個字節只有2^8 256個不一樣的值。字符串的長度能夠很長。。。你能夠當成是無限長吧,不過事實上是和機器的內存有關的。如下的字符串定義都是正確的: php

01 $str1 = '我是\'字"符\n串1';//單引號
02 $str2 = "我是\\\"字'符\n串2$str1\\";//雙引號
03 $str3 = <<<EOT
04 我是字"符'串
05 EOT;
06 //Heredoc
07 $str4 = <<<'EOT'
08 我也"是'字符串  k
09 EOT;
10  //Nowdoc
11 var_dump($str1);
12 var_dump($str2);
13 var_dump($str3);
14 var_dump($str4);

實驗證實使用heredoc或者nowdoc定義的時候<<<後面的字符是能夠自定義的,結尾要同樣,可是有個要求就是分隔符後面不能有任何字符,包括空格,因此真正的字符串從下一行開始,而後結束標記必須是另起一行,前面也不能有任何字符,不能縮進。另外上例中也說明了怎麼使用反斜杆來打印雙引和單引號,以及其餘特殊用法,稍微記一下就能夠了。雙引號能夠直接引用如str2。雙引號定義會替換下表中的特殊字符 mysql

Sequence Meaning
\n 換行 (LF or 0x0A (10) in ASCII)
\r 回車 (CR or 0x0D (13) in ASCII)
\t 水平方向的 tab(HT or 0×09 (9) in ASCII)
\v 豎直方向的 tab (VT or 0x0B (11) in ASCII) (since PHP 5.2.5)
\f 換頁 (FF or 0x0C (12) in ASCII) (since PHP 5.2.5)
\\ 反斜線
\$ 美金dollar標記
\」 雙引號
\[0-7]{1,3} 符合該表達式順序的字符串是一個八進制的字符
\x[0-9A-Fa-f]{1,2} 符合該表達式順序的字符串是一個十六進制的字符

其中str2中的\n被替換成了換行,可是str1中並無原樣輸出。能夠這樣理解heredoc就是雙引號,nowdoc就是單引號。只是其中的雙引號單引號不用用\轉義了。 另外注意一點:Nowdoc結構是在PHP 5.3.0中加入的。因此早起版本的php會出錯。 在雙引號中替換變量的時候要注意變量名是否一致,可使用{$b}來要求php僅把$b當成變量。能夠試下下面的代碼 sql

1 $ab = "ab";
2 $a = 'ac';
3 $str1 = "我是字符串$ab";
4 $str2 = "我是字符串{$a}b";
5  
6 var_dump($str1);//我是字符串ab
7 var_dump($str2);//我是字符串acb

字符串可使用$str[數字]來取字符串中的字符,數字從0開始。 一個boolean TRUE 值被轉換成 字符串「1″。 Boolean FALSE 被轉換成「」 (空的字符串)。 這種轉變能夠在boolean 和 字符串 之間往返進行。 一個 整數 或 浮點數 被轉變爲數字的字面樣式的字符串(包括浮點數中的指數部分),使用指數計數法的浮點數 (4.1E+10)也可轉變。 數組轉換成 字符串「Array」 對象被轉換成 字符串「Object」 資源轉變成字符串「Resource id #1″這種結構的 NULL老是被轉變成空的字符串。 因此打印數組對象和資源的時候能夠是用var_dump或者print_r而不是echo print 數組

5、對象

對象通常須要事先定義。要實例化一個對象用new,請看以下代碼 函數

01 class car
02 {
03     function run()
04     {
05         echo "I'm running.";
06     }
07 }
08  
09 $myCar = new car;
10 $myCar->run();

若是將一個對象轉換成對象,它將不會有任何變化。若是其它任何類型的值被轉換成對象,將會實例化一個內置類 stdClass 的對象。若是該值爲 NULL,則新的實例爲空。數組轉換成對象將使鍵名成爲屬性名並具備相對應的值。對於任何其它的值,名爲 scalar的成員變量將包含該值。 google

6、資源類型

資源是一種特殊變量,保存了到外部資源的一個引用。mysql查詢結果就是一種典型的資源類型。資源沒有轉換的意義。資源的釋放由系統完成,mysql資源除外。經過get_resource_type()能夠獲得資源來的類型。 spa

7、null

特殊的 NULL 值表示一個變量沒有值。NULL 類型惟一可能的值就是 NULL,大小寫不敏感NULL和null是同樣的。下列狀況將被視爲null: .net

  • 被賦值爲 NULL
  • 還沒有被賦值。
  • 被 unset()

實際使用中能夠用is_null()函數來判斷一個變量是否是null; scala

8、數組

PHP 中的 數組 其實是一個把values關聯到keys的有序映射。定義方法 code

1 array(  key =>  value
2      , ...
3      )
4 // 鍵(key) 但是是一個 整數(integer) 或 字符串(string)字符串必須用引號引發來.
5 // 值(value) 能夠是任意以上類型的值包括數組

若是對給出的值沒有指定鍵名,則取當前最大的整數索引值,而新的鍵名將是該值加一。若是指定的鍵名已經有了值,則該值會被覆蓋。 若是給一個當前最大鍵名是負值的數組添加一個新值,則新生成的的索引將爲零(0)。要使用數組的值只要使用下標就能夠了,數字下標直接使用,字符串下標要加引號。試試下面的代碼吧

1 var_dump(array(5 => 43, 32, 56, "b" => 12));
2 var_dump(array(-3 => 43, 32, 56, "b" => 12));
3 $arr = array(0=>'百度',"x"=>'google');
4 var_dump($arr[0]);
5 var_dump($arr['x']);
6 $arr['x'] = 'bing';
7 var_dump($arr);

要修改一個數組能夠直接給某個key設置賦值就行了好比上面最後兩行,若是要給數組添加沒有key的新值能夠這樣作$arr[] = ’1′;若是 $arr 還不存在,將會新建一個。這也是一種定義數組的替換方法。要改變一個值,只要給它賦一個新值。若是要刪除一個鍵名/值對,要對它用 unset()。

遍歷數組使用foreach,其中key能夠有野能夠沒有,看程序需不須要。試試下面的代碼

1 $arr = array(1,2,3,4,5);
2 foreach($arr as $key=>$value){
3   var_dump($key);//key能夠自定義
4   var_dump($value);//value也能夠自定義,這是個簡單的遍歷
5 }

數組博大精深,在php中會常常用到。

本文固定連接: http://www.qaforcode.net/archives/194 | 豬哥每日一貼

相關文章
相關標籤/搜索