(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)
var_export — 輸出或返回變量的可解析字符串表示
var_export() 函數(shù)返回關(guān)于傳遞給該函數(shù)的變量的結(jié)構(gòu)信息,它和 var_dump() 函數(shù)類(lèi)似,不同的是其返回的表示是合法的 PHP 代碼。
value
想要輸出的變量名。
return
此參數(shù)為 true
時(shí),var_export() 將返回一個(gè)變量,而不是輸出它。
參數(shù) return
為 true
時(shí)返回變量。否則返回 null
。
版本 | 說(shuō)明 |
---|---|
7.3.0 |
現(xiàn)在將 stdClass 對(duì)象作為數(shù)組類(lèi)型轉(zhuǎn)換為對(duì)象輸出(
(object) array( ... ) ),而不是使用不存在的
stdClass::__setState() 方法。實(shí)際效果是,現(xiàn)在
stdClass 是可輸出的,生成的代碼甚至可以在早期的
PHP 版本上運(yùn)行。
|
示例 #1 var_export() 示例
<?php
$a = array (1, 2, array ("a", "b", "c"));
var_export($a);
?>
以上例程會(huì)輸出:
array ( 0 => 1, 1 => 2, 2 => array ( 0 => 'a', 1 => 'b', 2 => 'c', ), )
<?php
$b = 3.1;
$v = var_export($b, true);
echo $v;
?>
以上例程會(huì)輸出:
3.1
示例 #2 輸出 stdClass 類(lèi) (自 PHP 7.3.0 起)
<?php
$person = new stdClass;
$person->name = 'ElePHPant ElePHPantsdotter';
$person->website = 'https://php.net/elephpant.php';
var_export($person);
以上例程會(huì)輸出:
(object) array( 'name' => 'ElePHPant ElePHPantsdotter', 'website' => 'https://php.net/elephpant.php', )
示例 #3 輸出對(duì)象 (自 PHP 5.1.0 起)
<?php
class A { public $var; }
$a = new A;
$a->var = 5;
var_export($a);
?>
以上例程會(huì)輸出:
A::__set_state(array( 'var' => 5, ))
示例 #4 使用 __set_state()
<?php
class A
{
public $var1;
public $var2;
public static function __set_state($an_array)
{
$obj = new A;
$obj->var1 = $an_array['var1'];
$obj->var2 = $an_array['var2'];
return $obj;
}
}
$a = new A;
$a->var1 = 5;
$a->var2 = 'foo';
eval('$b = ' . var_export($a, true) . ';'); // $b = A::__set_state(array(
// 'var1' => 5,
// 'var2' => 'foo',
// ));
var_dump($b);
?>
以上例程會(huì)輸出:
object(A)#2 (2) { ["var1"]=> int(5) ["var2"]=> string(3) "foo" }
注意:
類(lèi)型為 resource 的變量無(wú)法通過(guò)此函數(shù)輸出。
注意:
var_export() 不處理循環(huán)引用,因?yàn)閹缀醪豢赡転榇松煽山馕龅?PHP 代碼。如果您想對(duì)數(shù)組或?qū)ο蟮耐暾硎具M(jìn)行操作,請(qǐng)使用 serialize()。
當(dāng) var_export() 輸出對(duì)象時(shí),為了最大的兼容性,命名空間類(lèi)的類(lèi)名中不包含前導(dǎo)反斜杠。
注意:
為了能夠執(zhí)行 var_export() 生成的 PHP ,所有被處理的對(duì)象必須實(shí)現(xiàn) __set_state 魔術(shù)方法。 唯一的例外是 stdClass ,它作為數(shù)組類(lèi)型轉(zhuǎn)換為對(duì)象輸出。