【问题标题】:When should I var_export(..., TRUE), when FALSE?我应该什么时候 var_export(..., TRUE),什么时候 FALSE?
【发布时间】:2024-04-16 08:55:02
【问题描述】:

我有一个要写入文件的数组。该文件将包含在另一个脚本中,并读取和处理数组。

数组包含使用number_format(round($number, 2), 2, '.', '')(以保留零)四舍五入到两位小数的浮点数:

print_r($array,true);

Array
(
    [0] => Array
        (
            [0] => 320
            [1] => 128
            [2] => 4.10
            [3] => 4.10
        )

    [1] => Array

etc.

当我var_export数组时,设置$return = FALSE,用引号括起来的定点数导出:

$data = '<?php $array =' . var_export($array, FALSE) . '; ?>';
file_put_contents ($filename, $data);

array (
  0 => 
  array (
    0 => 320,
    1 => 128,
    2 => '4.10',
    3 => '4.10',
  ),
  1 =>

etc.

当我var_export$return = TRUE 时,没有引号:

$data = '<?php $array =' . var_export($array, TRUE) . '; ?>';
file_put_contents ($filename, $data);

array (
  0 => 
  array (
    0 => 320,
    1 => 128,
    2 => 4.10,
    3 => 4.10,
  ),
  1 =>

etc.

通过测试,我知道这两个代码在我的系统上执行相同。那么我错过了什么?我应该什么时候使用TRUE,什么时候使用FALSE,这些引号的用途是什么?

【问题讨论】:

    标签: php numbers export number-formatting


    【解决方案1】:

    第二个参数定义var_export是返回其值的表示形式,还是直接返回echo

    看这个例子:

    $x = array(1);
    $r_false = var_export($x, false);  // array ( 0 => 1, )
    $r_true = var_export($x, true);    // **nothing is printed**
    var_export($r_false);              // NULL
    var_export($r_true);               // 'array ( 0 => 1, )'
    

    您提供的两个示例都应该有效,但如果它们生成相同的文件,我会感到非常惊讶。

    这是我对每个人的期望:

    $array = array(1);
    $data = '<?php $array =' . var_export($array, TRUE) . '; ?>';
    file_put_contents($filename, $data);
    
    // contents of file:
    <?php $array =array ( 0 => 1, ); ?>
    
    //
    // VS:
    //
    
    $array = array(1);
    $data = '<?php $array =' . var_export($array, TRUE) . '; ?>';
    file_put_contents($filename, $data);
    
    // contents of file:
    <?php $array =; ?>
    
    // Here the value of $data is NULL, which becomes ''
    

    【讨论】:

    • 您对文件内容的解释最有帮助。谢谢你的好回答:-)
    • 我很高兴,很高兴我能提供帮助。