var_export

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

var_export輸出或返回變量的可解析字符串表示

說明

var_export(mixed $value, bool $return = false): ?string

var_export() 函數(shù)返回關(guān)于傳遞給該函數(shù)的變量的結(jié)構(gòu)信息,它和 var_dump() 函數(shù)類似,不同的是其返回的表示是合法的 PHP 代碼。

參數(shù)

value

想要輸出的變量名。

return

此參數(shù)為 true 時(shí),var_export() 將返回一個(gè)變量,而不是輸出它。

返回值

參數(shù) returntrue 時(shí)返回變量。否則返回 null。

更新日志

版本 說明
7.3.0 現(xiàn)在將 stdClass 對象作為數(shù)組類型轉(zhuǎn)換為對象輸出( (object) array( ... )),而不是使用不存在的 stdClass::__setState() 方法。實(shí)際效果是,現(xiàn)在 stdClass 是可輸出的,生成的代碼甚至可以在早期的 PHP 版本上運(yùn)行。

范例

示例 #1 var_export() 示例

<?php
$a 
= array (12, 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($btrue);
echo 
$v;

?>

以上例程會(huì)輸出:

3.1

示例 #2 輸出 stdClass 類 (自 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 輸出對象 (自 PHP 5.1.0 起)

<?php
class { 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($atrue) . ';'); // $b = A::__set_state(array(
                                            //    'var1' => 5,
                                            //    'var2' => 'foo',
                                            // ));
var_dump($b);
?>

以上例程會(huì)輸出:

object(A)#2 (2) {
  ["var1"]=>
  int(5)
  ["var2"]=>
  string(3) "foo"
}

注釋

注意:

類型為 resource 的變量無法通過此函數(shù)輸出。

注意:

var_export() 不處理循環(huán)引用,因?yàn)閹缀醪豢赡転榇松煽山馕龅?PHP 代碼。如果您想對數(shù)組或?qū)ο蟮耐暾硎具M(jìn)行操作,請使用 serialize()

警告

當(dāng) var_export() 輸出對象時(shí),為了最大的兼容性,命名空間類的類名中不包含前導(dǎo)反斜杠。

注意:

為了能夠執(zhí)行 var_export() 生成的 PHP ,所有被處理的對象必須實(shí)現(xiàn) __set_state 魔術(shù)方法。 唯一的例外是 stdClass ,它作為數(shù)組類型轉(zhuǎn)換為對象輸出。

參見

  • print_r() - 以易于理解的格式打印變量。
  • serialize() - 產(chǎn)生一個(gè)可存儲(chǔ)的值的表示
  • var_dump() - 打印變量的相關(guān)信息