国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

PHP的8 種原始數據類型【基礎】

whataa / 1259人閱讀

摘要:如果給定的一個數超出了的范圍,將會被解釋為。從布爾值轉換將產生出零,將產生出壹。由于內部表達方式的原因,比較兩個浮點數是否相等是有問題的。和在小數點后五位精度內都是相等的。這里共有兩種語法規則一種簡單規則,一種復雜規則。

前言

搬運:PHP官方文檔

四種標量類型 boolean(布爾型)

這是最簡單的類型。boolean表達了真值,可以為TRUE或FLASE。
要指定一個布爾值,使用關鍵字 TRUE 或 FALSE。兩個都不區分大小寫。

通常運算符所返回的 boolean 值結果會被傳遞給控制流程。


";
}

// ...因為可以使用下面這種簡單的方式:
if ($show_separators) {
    echo "
"; } ?>
要明確地將一個值轉換成 boolean,用 (bool) 或者 (boolean) 來強制轉換。但是很多情況下不需要用強制轉換,因為當運算符,函數或者流程控制結構需要一個 boolean 參數時,該值會被自動轉換。

當轉換為 boolean 時,以下值被認為是 FALSE:

- 布爾值 FALSE 本身
- 整型值 0(零)
- 浮點型值 0.0(零)
- 空字符串,以及字符串 "0"
- 不包括任何元素的數組
- 不包括任何成員變量的對象(僅 PHP 4.0 適用)
- 特殊類型 NULL(包括尚未賦值的變量)
- 從空標記生成的 SimpleXML 對象

其它非零值(不論正負)一樣,被認為是 TRUE!

integer(整型)

一個 integer 是集合 ? = {..., -2, -1, 0, 1, 2, ...} 中的一個數。

整型值可以使用十進制,十六進制,八進制或二進制表示,前面可以加上可選的符號(- 或者 +);二進制表達的 integer 自 PHP 5.4.0 起可用;要使用八進制表達,數字前必須加上 0(零)。要使用十六進制表達,數字前必須加上 0x。要使用二進制表達,數字前必須加上 0b。

Example #1 整數文字表達

整型數的字長和平臺有關,盡管通常最大值是大約二十億(32 位有符號)。64 位平臺下的最大值通常是大約 9E18。PHP 不支持無符號整數。Integer 值的字長可以用常量 PHP_INT_SIZE來表示,自 PHP 4.4.0 和 PHP 5.0.5后,最大值可以用常量 PHP_INT_MAX 來表示。

如果給定的一個數超出了 integer 的范圍,將會被解釋為 float。同樣如果執行的運算結果超出了 integer 范圍,也會返回 float。

Example #2 64 位系統下的整數溢出

PHP 中沒有整除的運算符。1/2 產生出 float 0.5。值可以舍棄小數部分強制轉換為 integer,或者使用 round() 函數可以更好地進行四舍五入。

轉換為整型
要明確地將一個值轉換為 integer,用 (int) 或 (integer) 強制轉換。不過大多數情況下都不需要強制轉換,因為當運算符,函數或流程控制需要一個 integer 參數時,值會自動轉換。還可以通過函數 intval() 來將一個值轉換成整型。

從布爾值轉換
FALSE 將產生出 0(零),TRUE 將產生出 1(壹)。

從浮點型轉換
當從浮點數轉換成整數時,將向下取整。

float(浮點型,也稱作 double)

浮點型(也叫浮點數 float,雙精度數 double 或實數 real)可以用以下任一語法定義:

浮點數的字長和平臺相關,盡管通常最大值是 1.8e308 并具有 14 位十進制數字的精度(64 位 IEEE 格式)。
由于內部表達方式的原因,比較兩個浮點數是否相等是有問題的。不過還是有迂回的方法來比較浮點數值的;要測試浮點數是否相等,要使用一個僅比該數值大一丁點的最小誤差值。該值也被稱為機器極小值(epsilon)或最小單元取整數,是計算中所能接受的最小的差別值。

$a$b 在小數點后五位精度內都是相等的。

NaN
某些數學運算會產生一個由常量 NAN 所代表的結果。此結果代表著一個在浮點數運算中未定義或不可表述的值。任何拿此值與其它任何值進行的松散或嚴格比較的結果都是 FALSE。
由于 NAN 代表著任何不同值,不應拿 NAN 去和其它值進行比較,包括其自身,應該用 is_nan() 來檢查。

string(字符串)

一個字符串 string 就是由一系列的字符組成,其中每個字符等同于一個字節。這意味著 PHP 只能支持 256 的字符集,因此不支持 Unicode 。

Note: string 最大可以達到 2GB。

語法

一個字符串可以用 4 種方式表達:

- 單引號
- 雙引號
- heredoc 語法結構
- nowdoc 語法結構(自 PHP 5.3.0 起)

單引號

定義一個字符串的最簡單的方法是用單引號把它包圍起來(字符 ")。

要表達一個單引號自身,需在它的前面加個反斜線()來轉義。要表達一個反斜線自身,則用兩個反斜線()。其它任何方式的反斜線都會被當成反斜線本身:也就是說如果想使用其它轉義序列例如 r 或者 n,并不代表任何特殊含義,就單純是這兩個字符本身。

Note: 不像雙引號和 heredoc 語法結構,在單引號字符串中的變量和特殊字符的轉義序列將不會被替換。

雙引號

轉義字符

序列                  含義

                    換行(ASCII 字符集中的 LF 或 0x0A (10))

                    回車(ASCII 字符集中的 CR 或 0x0D (13))
	                    水平制表符(ASCII 字符集中的 HT 或 0x09 (9))
v                    垂直制表符(ASCII 字符集中的 VT 或 0x0B (11))(自 PHP 5.2.5 起)
e                    Escape(ASCII 字符集中的 ESC 或 0x1B (27))(自 PHP 5.4.0 起)
f                    換頁(ASCII 字符集中的 FF 或 0x0C (12))(自 PHP 5.2.5 起)
                    反斜線
$                    美元標記
"                    雙引號
[0-7]{1,3}           符合該正則表達式序列的是一個以八進制方式來表達的字符
x[0-9A-Fa-f]{1,2}    符合該正則表達式序列的是一個以十六進制方式來表達的字符

和單引號字符串一樣,轉義任何其它字符都會導致反斜線被顯示出來。PHP 5.1.1 以前,{$var} 中的反斜線還不會被顯示出來;用雙引號定義的字符串最重要的特征是變量會被解析。

Heredoc 結構

第三種表達字符串的方法是用 heredoc 句法結構:<<<。在該運算符之后要提供一個標識符,然后換行。接下來是字符串 string 本身,最后要用前面定義的標識符作為結束標志。

結束時所引用的標識符必須在該行的第一列,而且,標識符的命名也要像其它標簽一樣遵守 PHP 的規則:只能包含字母、數字和下劃線,并且必須以字母和下劃線作為開頭。

要注意的是結束標識符這行除了可能有一個分號(;)外,絕對不能包含其它字符。這意味著標識符不能縮進,分號的前后也不能有任何空白或制表符。更重要的是結束標識符的前面必須是個被本地操作系統認可的換行,比如在 UNIX 和 Mac OS X 系統中是 n,而結束定界符(可能其后有個分號)之后也必須緊跟一個換行。
如果不遵守該規則導致結束標識不“干凈”,PHP 將認為它不是結束標識符而繼續尋找。如果在文件結束前也沒有找到一個正確的結束標識符,PHP 將會在最后一行產生一個解析錯誤。
Heredocs 結構不能用來初始化類的屬性。自 PHP 5.3 起,此限制僅對 heredoc 包含變量時有效。
Example #1 非法的示例

Heredoc 結構就象是沒有使用雙引號的雙引號字符串,這就是說在 heredoc 結構中單引號不用被轉義,但是上文中列出的轉義序列還可以使用。變量將被替換,但在 heredoc 結構中含有復雜的變量時要格外小心。

Example #2 Heredoc 結構的字符串示例

foo = "Foo";
        $this->bar = array("Bar1", "Bar2", "Bar3");
    }
}

$foo = new foo();
$name = "MyName";

echo <<foo.
Now, I am printing some {$foo->bar[1]}.
This should print a capital "A": x41
EOT;
?>

以上例程會輸出:

My name is "MyName". I am printing some Foo.
Now, I am printing some Bar2.
This should print a capital "A": A

Example #3 Heredoc 結構在參數中的示例

在 PHP 5.3.0 以后,也可以用 Heredoc 結構來初始化靜態變量和類的屬性和常量:

Example #4 使用 Heredoc 結構來初始化靜態值

自 PHP 5.3.0 起還可以在 Heredoc 結構中用雙引號來聲明標識符:
Example #5 在 heredoc 結構中使用雙引號

Nowdoc 結構

就象 heredoc 結構類似于雙引號字符串,Nowdoc 結構是類似于單引號字符串的。Nowdoc 結構很象 heredoc 結構,但是 nowdoc 中不進行解析操作。這種結構很適合用于嵌入 PHP 代碼或其它大段文本而無需對其中的特殊字符進行轉義。與 SGML 的 結構是用來聲明大段的不用解析的文本類似,nowdoc 結構也有相同的特征。

一個 nowdoc 結構也用和 heredocs 結構一樣的標記 <<<, 但是跟在后面的標識符要用單引號括起來,即 <<<"EOT"。Heredoc 結構的所有規則也同樣適用于 nowdoc 結構,尤其是結束標識符的規則。

Example #6 Nowdoc 結構字符串示例

foo = "Foo";
        $this->bar = array("Bar1", "Bar2", "Bar3");
    }
}

$foo = new foo();
$name = "MyName";

echo <<<"EOT"
My name is "$name". I am printing some $foo->foo.
Now, I am printing some {$foo->bar[1]}.
This should not print a capital "A": x41
EOT;
?>

以上例程會輸出:

My name is "$name". I am printing some $foo->foo.
Now, I am printing some {$foo->bar[1]}.
This should not print a capital "A": x41
Note:
不象 heredoc 結構,nowdoc 結構可以用在任意的靜態數據環境中,最典型的示例是用來初始化類的屬性或常量:
Nowdoc 結構是在 PHP 5.3.0 中加入的。

Example #7 靜態數據的示例

變量解析

當字符串用雙引號或 heredoc 結構定義時,其中的變量將會被解析。

這里共有兩種語法規則:一種簡單規則,一種復雜規則。簡單的語法規則是最常用和最方便的,它可以用最少的代碼在一個 string 中嵌入一個變量,一個 array 的值,或一個 object 的屬性。

復雜規則語法的顯著標記是用花括號包圍的表達式。

簡單語法

當 PHP 解析器遇到一個美元符號($)時,它會和其它很多解析器一樣,去組合盡量多的標識以形成一個合法的變量名。可以用花括號來明確變量名的界線。

以上例程會輸出:

He drank some apple juice.
He drank some juice made of .

類似的,一個 array 索引或一個 object 屬性也可被解析。數組索引要用方括號(])來表示索引結束的邊際,對象屬性則是和上述的變量規則相同。

Example #8 簡單語法示例

 "purple");

echo "He drank some $juices[0] juice.".PHP_EOL;
echo "He drank some $juices[1] juice.".PHP_EOL;
echo "He drank some juice made of $juice[0]s.".PHP_EOL; // Won"t work
echo "He drank some $juices[koolaid1] juice.".PHP_EOL;

class people {
    public $john = "John Smith";
    public $jane = "Jane Smith";
    public $robert = "Robert Paulsen";
    
    public $smith = "Smith";
}

$people = new people();

echo "$people->john drank some $juices[0] juice.".PHP_EOL;
echo "$people->john then said hello to $people->jane.".PHP_EOL;
echo "$people->john"s wife greeted $people->robert.".PHP_EOL;
echo "$people->robert greeted the two $people->smiths."; // Won"t work
?>

以上例程會輸出:

He drank some apple juice.
He drank some orange juice.
He drank some juice made of s.
He drank some purple juice.
John Smith drank some apple juice.
John Smith then said hello to Jane Smith.
John Smith"s wife greeted Robert Paulsen.
Robert Paulsen greeted the two .

如果想要表達更復雜的結構,請用復雜語法。

復雜(花括號)語法

復雜語法不是因為其語法復雜而得名,而是因為它可以使用復雜的表達式。

任何具有 string 表達的標量變量,數組單元或對象屬性都可使用此語法。只需簡單地像在 string 以外的地方那樣寫出表達式,然后用花括號 { 和 } 把它括起來即可。由于 { 無法被轉義,只有 $ 緊挨著 { 時才會被識別。可以用 {$ 來表達 {$。下面的示例可以更好的解釋:

width}00 centimeters broad."; 

// 有效,只有通過花括號語法才能正確解析帶引號的鍵名
echo "This works: {$arr["key"]}";

// 有效
echo "This works: {$arr[4][3]}";

// 這是錯誤的表達式,因為就象 $foo[bar] 的格式在字符串以外也是錯的一樣。
// 換句話說,只有在 PHP 能找到常量 foo 的前提下才會正常工作;這里會產生一個
// E_NOTICE (undefined constant) 級別的錯誤。
echo "This is wrong: {$arr[foo][3]}"; 

// 有效,當在字符串中使用多重數組時,一定要用括號將它括起來
echo "This works: {$arr["foo"][3]}";

// 有效
echo "This works: " . $arr["foo"][3];

echo "This works too: {$obj->values[3]->name}";

echo "This is the value of the var named $name: {${$name}}";

echo "This is the value of the var named by the return value of getName(): {${getName()}}";

echo "This is the value of the var named by the return value of $object->getName(): {${$object->getName()}}";

// 無效,輸出: This is the return value of getName(): {getName()}
echo "This is the return value of getName(): {getName()}";
?>

也可以在字符串中用此語法通過變量來調用類的屬性。

$bar}
";
echo "{$foo->$baz[1]}
";
?>

以上例程會輸出:

I am bar.
I am bar. 
函數、方法、靜態類變量和類常量只有在 PHP 5 以后才可在 {$} 中使用。然而,只有在該字符串被定義的命名空間中才可以將其值作為變量名來訪問。只單一使用花括號 ({}) 無法處理從函數或方法的返回值或者類常量以及類靜態變量的值。
轉換成字符串

一個值可以通過在其前面加上 (string) 或用 strval() 函數來轉變成字符串。在一個需要字符串的表達式中,會自動轉換為 string。比如在使用函數 echo 或 print 時,或在一個變量和一個 string 進行比較時,就會發生這種轉換。類型和類型轉換可以更好的解釋下面的事情,也可參考函數 settype()。

一個布爾值 boolean 的 TRUE 被轉換成 string 的 "1"。Boolean 的 FALSE 被轉換成 ""(空字符串)。這種轉換可以在 boolean 和 string 之間相互進行。

一個整數 integer 或浮點數 float 被轉換為數字的字面樣式的 string(包括 float 中的指數部分)。使用指數計數法的浮點數(4.1E+6)也可轉換。

數組 array 總是轉換成字符串 "Array",因此,echo 和 print 無法顯示出該數組的內容。要顯示某個單元,可以用 echo $arr["foo"] 這種結構。

資源 resource 總會被轉變成 "Resource id #1" 這種結構的字符串,其中的 1 是 PHP 在運行時分配給該 resource 的唯一值。不要依賴此結構,可能會有變更。要得到一個 resource 的類型,可以用函數 get_resource_type()。

NULL 總是被轉變成空字符串。

如上面所說的,直接把 array,object 或 resource 轉換成 string 不會得到除了其類型之外的任何有用信息。可以使用函數 print_r() 和 var_dump() 列出這些類型的內容。

大部分的 PHP 值可以轉變成 string 來永久保存,這被稱作串行化,可以用函數 serialize() 來實現。如果 PHP 引擎設定支持 WDDX,PHP 值也可被串行化為格式良好的 XML 文本。

字符串轉換為數值

當一個字符串被當作一個數值來取值,其結果和類型如下:

如果該字符串沒有包含 ".","e" 或 "E" 并且其數字值在整型的范圍之內(由 PHP_INT_MAX 所定義),該字符串將被當成 integer 來取值。其它所有情況下都被作為 float 來取值。

該字符串的開始部分決定了它的值。如果該字符串以合法的數值開始,則使用該數值。否則其值為 0(零)。合法數值由可選的正負號,后面跟著一個或多個數字(可能有小數點),再跟著可選的指數部分。指數部分由 "e" 或 "E" 后面跟著一個或多個數字構成。

兩種復合類型 array(數組)

PHP 中的數組實際上是一個有序映射。映射是一種把 values 關聯到 keys 的類型。此類型在很多方面做了優化,因此可以把它當成真正的數組,或列表(向量),散列表(是映射的一種實現),字典,集合,棧,隊列以及更多可能性。由于數組元素的值也可以是另一個數組,樹形結構和多維數組也是允許的。

語法

定義數組 array()
可以用 array() 語言結構來新建一個數組。它接受任意數量用逗號分隔的 鍵(key) => 值(value)對

array(  key =>  value
     , ...
     )
// 鍵(key)可是是一個整數 integer 或字符串 string
// 值(value)可以是任意類型的值

最后一個數組單元之后的逗號可以省略。通常用于單行數組定義中,例如常用 array(1, 2) 而不是 array(1, 2, )。對多行數組定義通常保留最后一個逗號,這樣要添加一個新單元時更方便。

自 5.4 起可以使用短數組定義語法,用 [] 替代 array()。

Example #1 一個簡單數組

 "bar",
    "bar" => "foo",
);

// 自 PHP 5.4 起
$array = [
    "foo" => "bar",
    "bar" => "foo",
];
?>

key 可以是 integer 或者 string。value 可以是任意類型。

此外 key 會有如下的強制轉換:

包含有合法整型值的字符串會被轉換為整型。例如鍵名 "8" 實際會被儲存為 8。但是 "08" 則不會強制轉換,因為其不是一個合法的十進制數值。

浮點數也會被轉換為整型,意味著其小數部分會被舍去。例如鍵名 8.7 實際會被儲存為 8。

布爾值也會被轉換成整型。即鍵名 true 實際會被儲存為 1 而鍵名 false 會被儲存為 0。

Null 會被轉換為空字符串,即鍵名 null 實際會被儲存為 ""。

數組和對象不能被用為鍵名。堅持這么做會導致警告:Illegal offset type。

如果在數組定義中多個單元都使用了同一個鍵名,則只使用了最后一個,之前的都被覆蓋了。

Example #2 類型強制與覆蓋示例

 "a",
    "1"  => "b",
    1.5  => "c",
    true => "d",
);
var_dump($array);
?>

以上例程會輸出:

array(1) {
  [1]=>
  string(1) "d"
}

上例中所有的鍵名都被強制轉換為 1,則每一個新單元都會覆蓋前一個的值,最后剩下的只有一個 "d"。

PHP 數組可以同時含有 integer 和 string 類型的鍵名,因為 PHP 實際并不區分索引數組和關聯數組。

如果對給出的值沒有指定鍵名,則取當前最大的整數索引值,而新的鍵名將是該值加一。如果指定的鍵名已經有了值,則該值會被覆蓋。

Example #3 混合 integer 和 string 鍵名

 "bar",
    "bar" => "foo",
    100   => -100,
    -100  => 100,
);
var_dump($array);
?>

以上例程會輸出:

array(4) {
  ["foo"]=>
  string(3) "bar"
  ["bar"]=>
  string(3) "foo"
  [100]=>
  int(-100)
  [-100]=>
  int(100)
}

key 為可選項。如果未指定,PHP 將自動使用之前用過的最大 integer 鍵名加上 1 作為新的鍵名。

Example #4 沒有鍵名的索引數組

以上例程會輸出:

array(4) {
  [0]=>
  string(3) "foo"
  [1]=>
  string(3) "bar"
  [2]=>
  string(5) "hallo"
  [3]=>
  string(5) "world"
}

還可以只對某些單元指定鍵名而對其它的空置:

Example #5 僅對部分單元指定鍵名

 "c",
         "d",
);
var_dump($array);
?>

以上例程會輸出:

array(4) {
  [0]=>
  string(1) "a"
  [1]=>
  string(1) "b"
  [6]=>
  string(1) "c"
  [7]=>
  string(1) "d"
}

可以看到最后一個值 "d" 被自動賦予了鍵名 7。這是由于之前最大的整數鍵名是 6。

用方括號語法訪問數組單元

數組單元可以通過 array[key] 語法來訪問。

Example #6 訪問數組單元

 "bar",
    42    => 24,
    "multi" => array(
         "dimensional" => array(
             "array" => "foo"
         )
    )
);

var_dump($array["foo"]);
var_dump($array[42]);
var_dump($array["multi"]["dimensional"]["array"]);
?>

以上例程會輸出:

string(3) "bar"
int(24)
string(3) "foo"
方括號和花括號可以互換使用來訪問數組單元(例如 $array[42] 和 $array{42} 在上例中效果相同)。

自 PHP 5.4 起可以用數組間接引用函數或方法調用的結果。之前只能通過一個臨時變量。

自 PHP 5.5 起可以用數組間接引用一個數組原型。

Example #7 數組間接引用

試圖訪問一個未定義的數組鍵名與訪問任何未定義變量一樣:會導致 E_NOTICE 級別錯誤信息,其結果為 NULL。

用方括號的語法新建/修改

可以通過明示地設定其中的值來修改一個已有數組。

這是通過在方括號內指定鍵名來給數組賦值實現的。也可以省略鍵名,在這種情況下給變量名加上一對空的方括號([])。

$arr[key] = value;
$arr[] = value;
// key 可以是 integer 或 string
// value 可以是任意類型的值

如果 $arr 還不存在,將會新建一個,這也是另一種新建數組的方法。不過并不鼓勵這樣做,因為如果 $arr 已經包含有值(例如來自請求變量的 string)則此值會保留而 [] 實際上代表著字符串訪問運算符。初始化變量的最好方式是直接給其賦值。。

要修改某個值,通過其鍵名給該單元賦一個新值。要刪除某鍵值對,對其調用 unset() 函數。

 1, 12 => 2);

$arr[] = 56;    // This is the same as $arr[13] = 56;
                // at this point of the script

$arr["x"] = 42; // This adds a new element to
                // the array with key "x"
                
unset($arr[5]); // This removes the element from the array

unset($arr);    // This deletes the whole array
?>
如上所述,如果給出方括號但沒有指定鍵名,則取當前最大整數索引值,新的鍵名將是該值加上 1(但是最小為 0)。如果當前還沒有整數索引,則鍵名將為 0。

注意這里所使用的最大整數鍵名不一定當前就在數組中。它只要在上次數組重新生成索引后曾經存在過就行了。以下面的例子來說明

下面的例子來說明:

 $value) {
    unset($array[$i]);
}
print_r($array);

// 添加一個單元(注意新的鍵名是 5,而不是你可能以為的 0)
$array[] = 6;
print_r($array);

// 重新索引:
$array = array_values($array);
$array[] = 7;
print_r($array);
?>

以上例程會輸出:

Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
    [4] => 5
)
Array
(
)
Array
(
    [5] => 6
)
Array
(
    [0] => 6
    [1] => 7
)

實用函數

有很多操作數組的函數,參見數組函數一節

unset() 函數允許刪除數組中的某個鍵。但要注意數組將不會重建索引。如果需要刪除后重建索引,可以用 array_values() 函數。
 "one", 2 => "two", 3 => "three");
unset($a[2]);
/* will produce an array that would have been defined as
   $a = array(1 => "one", 3 => "three");
   and NOT
   $a = array(1 => "one", 2 =>"three");
*/

$b = array_values($a);
// Now $b is array(0 => "one", 1 =>"three")
?>

foreach 控制結構是專門用于數組的。它提供了一個簡單的方法來遍歷數組。

和在語法一節中規定的一樣,在方括號(“[”和“]”)之間必須有一個表達式。這意味著可以這樣寫:

轉換為數組

對于任意 integer,float,string,boolean 和 resource 類型,如果將一個值轉換為數組,將得到一個僅有一個元素的數組,其下標為 0,該元素即為此標量的值。換句話說,(array)$scalarValue 與 array($scalarValue) 完全一樣。

如果一個 object 類型轉換為 array,則結果為一個數組,其單元為該對象的屬性。鍵名將為成員變量名,不過有幾點例外:整數屬性不可訪問;私有變量前會加上類名作前綴;保護變量前會加上一個 "*" 做前綴。這些前綴的前后都各有一個 NULL 字符。這會導致一些不可預知的行為:

可以用 array_diff() 和數組運算符來比較數組。

直接改變數組的值自 PHP 5 起可以通過引用傳遞來做到。之前的版本需要需要采取變通的方法:

Example #10 在循環中改變單元

 $color) {
    $colors[$key] = strtoupper($color);
}

print_r($colors);
?>

以上例程會輸出:

Array
(
    [0] => RED
    [1] => BLUE
    [2] => GREEN
    [3] => YELLOW
)

數組(Array) 的賦值總是會涉及到值的拷貝。使用引用運算符通過引用來拷貝數組。

object(對象)

對象初始化
要創建一個新的對象 object,使用 new 語句實例化一個類:

do_foo();
?>

詳細討論參見手冊中類與對象章節。

轉換為對象

如果將一個對象轉換成對象,它將不會有任何變化。如果其它任何類型的值被轉換成對象,將會創建一個內置類 stdClass 的實例。如果該值為 NULL,則新的實例為空。數組轉換成對象將使鍵名成為屬性名并具有相對應的值。對于任何其它的值,名為 scalar 的成員變量將包含該值。

scalar;  // outputs "ciao"
?>
兩種特殊類型: resource(資源)
資源 resource 是一種特殊變量,保存了到外部資源的一個引用。資源是通過專門的函數來建立和使用的。所有這些函數及其相應資源類型見附錄。
參見 get_resource_type()。

轉換為資源
由于資源類型變量保存有為打開文件、數據庫連接、圖形畫布區域等的特殊句柄,因此將其它類型的值轉換為資源沒有意義。

釋放資源
由于 PHP 4 Zend 引擎引進了引用計數系統,可以自動檢測到一個資源不再被引用了(和 Java 一樣)。這種情況下此資源使用的所有外部資源都會被垃圾回收系統釋放。因此,很少需要手工釋放內存。

由于 PHP 4 Zend 引擎引進了引用計數系統,可以自動檢測到一個資源不再被引用了(和 Java 一樣)。這種情況下此資源使用的所有外部資源都會被垃圾回收系統釋放。因此,很少需要手工釋放內存。
持久數據庫連接比較特殊,它們不會被垃圾回收系統銷毀。參見數據庫永久連接一章。
NULL

特殊的 NULL 值表示一個變量沒有值。NULL 類型唯一可能的值就是 NULL。

在下列情況下一個變量被認為是 NULL:

被賦值為 NULL。

尚未被賦值。

被 unset()。

使用 (unset) $var 將一個變量轉換為 null 將不會刪除該變量或 unset 其值。僅是返回 NULL 值而已。

(已完結)

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/21396.html

相關文章

  • 通過Swoole Framework學習websocket協議

    摘要:服務端的開發離不開協議,的出現對于學習通信來說,無疑是非常好的教材。一旦握手成功,一個雙向連接通道就建立了。類型包括文本,二進制,協議層信號等。目前一共有種類型,種保留類型。表示異或,表示取模。 服務端的開發離不開協議,swoole的出現對于學習通信來說,無疑是非常好的教材。非常推薦大家下載 Swoole Framework,其中包含了多種協議的php實現,例如FTP,HTTP,...

    wenyiweb 評論0 收藏0
  • PHP入門

    摘要:運行在瀏覽器端。未來軟件的大趨勢。相同點為語言結構,不是函數輸出一個或者多個變量的類型,長度及值一般用于打印復雜變量結合標記格式化輸出如數組對象等輸出變量的值。一般用于打印變量。中認為變量的值為時,變量雖然定義了,但是無實際的意義。 PHP目錄======== php介紹 2 基礎 31 運算符 70 流程控制 77 函數 91 文件引入 100 ...

    abson 評論0 收藏0
  • JS基礎篇--JS之表單提交時編碼類型enctype詳解

    摘要:格式支持比鍵值對復雜得多的結構化數據,這一點也很有用。例如下面這段代碼最終發送的請求是這種方案,可以方便的提交復雜的結構化數據,特別適合的接口。 簡介 form的enctype屬性為編碼方式,常用有兩種:application/x-www-form-urlencoded和multipart/form-data,默認為application/x-www-form-urlencoded。 ...

    ad6623 評論0 收藏0

發表評論

0條評論

whataa

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<