在PHP中查看大数组

时间:2011-09-18 20:00:57

标签: php arrays

我正在尝试理解落在我桌面上的OO PHP应用程序。当我执行大型数组的print_rvar_dump时,我可以获得18000多行。

是否有可用于更好地查看和搜索结果的在线工具或类?例如,我有一个名为“company_name”的值,它有三个级别,可能需要一段时间才能找到直接访问它的方法。

5 个答案:

答案 0 :(得分:2)

我会设置Eclipse and XDebug并通过调试器运行代码。但即使没有调试器,您也可以只设置xdebug,并获得var_dump的增强输出。

示例:

enter image description here

答案 1 :(得分:2)

如果我理解正确你想使用print_r,但有换行符可以让你更容易阅读数组...

使用<pre>标记

创建新功能
function print_x($arr) {
    echo "<pre>";
    print_r($arr);
    echo "</pre>";
}

答案 2 :(得分:2)

您可以查看Krumo

  

简而言之,Krumo是print_r()和var_dump()的替代品。根据定义,Krumo是一个调试工具(最初用于PHP4 / PHP5,现在仅用于PHP5),它显示有关任何PHP变量的结构化信息。

答案 3 :(得分:0)

如果你只想要一个具有可扩展/可折叠节点的数组的快速和脏的可视化表示,我将通过json_encode()运行它并使用浏览器的开发工具来查看它。

请注意, 有更多更好的方式来显示数据(请参阅其他答案),但这一方法是最快的手头工具。

答案 4 :(得分:0)

我有一个非常确切的问题。我最终找到了一个解决方案,将输出转换为可折叠的树。

print_rvar_dump之前插入此功能。

<?php
function print_r_tree($data)
{
    // capture the output of print_r
    $out = print_r($data, true);

    // replace something like '[element] => <newline> (' with <a href="javascript:toggleDisplay('...');">...</a><div id="..." style="display: none;">
    $out = preg_replace('/([ \t]*)(\[[^\]]+\][ \t]*\=\>[ \t]*[a-z0-9 \t_]+)\n[ \t]*\(/iUe',"'\\1<a href=\"javascript:toggleDisplay(\''.(\$id = substr(md5(rand().'\\0'), 0, 7)).'\');\">\\2</a><div id=\"'.\$id.'\" style=\"display: none;\">'", $out);

    // replace ')' on its own on a new line (surrounded by whitespace is ok) with '</div>
    $out = preg_replace('/^\s*\)\s*$/m', '</div>', $out);

    // print the javascript function toggleDisplay() and then the transformed output
    echo '<script language="Javascript">function toggleDisplay(id) { document.getElementById(id).style.display = (document.getElementById(id).style.display == "block") ? "none" : "block"; }</script>'."\n$out";
}
?>

而不是print_r(),请使用print_r_tree()

您可以阅读有关我在类似问题here上获得的功能和其他答案的更多信息。