(PHP 4, PHP 5, PHP 7, PHP 8)
compact — 建立一個數(shù)組,包括變量名和它們的值
$var_name
, array|string ...$var_names
): array創(chuàng)建一個包含變量與其值的數(shù)組。
對每個參數(shù),compact() 在當(dāng)前的符號表中查找該變量名并將它添加到輸出的數(shù)組中,變量名成為鍵名而變量的內(nèi)容成為該鍵的值。簡單說,它做的事和 extract() 正好相反。返回將所有變量添加進(jìn)去后的數(shù)組。
注意:
在 PHP 7.3 之前版本,未設(shè)置的字符串會被靜默忽略。
var_name
var_names
compact() 接受可變的參數(shù)數(shù)目。每個參數(shù)可以是一個包括變量名的字符串或者是一個包含變量名的數(shù)組,該數(shù)組中還可以包含其它單元內(nèi)容為變量名的數(shù)組, compact() 可以遞歸處理。
返回輸出的數(shù)組,包含了添加的所有變量。
如果字符串指向的變量未定義,compact() 會產(chǎn)生 E_NOTICE 級錯誤。
版本 | 說明 |
---|---|
7.3.0 | 現(xiàn)在,如果字符串指向的變量未定義,compact() 會產(chǎn)生 E_NOTICE 級錯誤。 在此之前,此類問題會靜默忽略掉。 |
示例 #1 compact() 例子
<?php
$city = "San Francisco";
$state = "CA";
$event = "SIGGRAPH";
$location_vars = array("city", "state");
$result = compact("event", $location_vars);
print_r($result);
?>
以上例程會輸出:
Array ( [event] => SIGGRAPH [city] => San Francisco [state] => CA )
注意: Gotcha
因?yàn)?a class="link" href="language.variables.variable.html">可變變量也許不能在函數(shù)內(nèi)部用于 PHP 的超全局?jǐn)?shù)組,此時不能將超全局?jǐn)?shù)組傳遞入 compact() 中。