在PHP中替换Var_dump / Var_exported数据

时间:2017-07-11 11:20:02

标签: php

我的问题

是否可以使用str_replace或PHP中的任何其他特殊方法替换var_dump / var_export数据?

例如改变这个:

array (
  0 => 
  array (
    'age' => '21',
    'number' => '45243',
    'anotherNumber' => '32463',
    'anotherAge' => '33',
  ),
)

进入这个

[
  0 => 
  [
    'age' => '21',
    'number' => '45243',
    'anotherNumber' => '32463',
    'AnotherAge' => '33',
  ],
]

使用str_replace('array (', '[', var_export($obj));

之类的语句

或者沿着这些方向的东西,我已经尝试了上述陈述,但它不起作用

2 个答案:

答案 0 :(得分:1)

不,这是不可能的。因为数组键或值中可能有'('或')',它也会被替换。最好使用具有适当格式的递归来构建自己的函数

e.g:

function myDump($arr) {

    if (is_scalar($arr)) {
        echo var_export($arr);
        return;
    }
    if (is_array($arr)) {
        echo '[' . PHP_EOL; 
        $cc = '';
        foreach ($arr as $k => $val) {
            echo $cc, var_export($k), ' => ';
            myDump($val, $level + 1);
            $cc = ',' . PHP_EOL;
        }
        echo '],', PHP_EOL;
    }
}

$arr = array (
  array (
    'age' => '21',
    'number' => '45243',
    'anotherNumber' => '32463',
    'anotherAge' => '33',
  ),
);

echo '<pre>';
myDump($arr);
echo '</pre>';

输出将是:

[
0 => [
'age' => '21',
'number' => '45243',
'anotherNumber' => '32463',
'anotherAge' => '33'],
],

这只是一个例子,根据您的需要进行修改。

答案 1 :(得分:0)

是的,但你必须给&#34;返回&#34; var_export的参数。

像这样:echo str_replace('array (', '[', var_export($obj, true));

进一步阅读:http://php.net/manual/de/function.var-export.php

str_replace也可以将数组作为前两个参数。因此,您可以在一次调用中处理多个替换操作。

像这样:echo str_replace(['array (', ')'], ['[', ']'], var_export($obj, true));

但是应该说明这将取代所有出现的&#39;&#39;用&#39;]&#39;。因此,如果在数组的某些字符串中使用大括号,则会操纵数据。