将嵌套的PHP数组打印为$ var ['key'] ['key'] ['key'] = value;

时间:2011-11-13 01:44:19

标签: php arrays nested

需要将一些设置(使用fwrite())写入php文件格式:

$var['key']['key']['key'] = false; // bool
$var['key']['key'] = 'string'; // string
$var['key'] = 1; // numeric

为此

嵌套了php数组

代码将覆盖上面文件中定义的一些值,Var_export()在我的例子中没用。

任何好的解决方案?

1 个答案:

答案 0 :(得分:1)

之前我answered this question in Perl - 我想我可以直接解决PHP的答案要点:

function dump_array_recursive ( $prefix, $var ) {
    if ( is_array( $var ) && !empty( $var ) ) {
        foreach ($var as $key => $val) {
            $prefix_key = $prefix . "[" . var_export( $key, true ) . "]";
            dump_array_recursive( $prefix_key, $val );
        }
    } else {
        echo "$prefix = " . var_export( $var, true ) . ";\n";
    }
}

// example call:
dump_array_recursive( '$foo', $foo );

这比Perl版本稍微简单一些,因为PHP只有一种数组类型,没有标量引用可以担心。我还决定不尝试收集输出,而只是使用echo;如果需要,可以用fwrite()替换它,或者只使用输出缓冲来捕获字符串中的结果。

聚苯乙烯。请注意,虽然此函数的输出通常为每个值包含一行,但不保证这一点:var_export()的输出可能包含换行符,这些换行符将传递给输出。我发现触发此类行为的两个案例包括带有换行符的数组键和空数组,由于某种原因导出为"array (\n)"而不是"array()"