PHP:如何确定var_Dump()是否会超出终端窗口显示?

时间:2015-07-10 19:34:30

标签: php xml shell terminal

我有一个PHP脚本,它对大型XML文件进行排序,然后使用var_dump()将XML内容反射回命令行。有时XML文件非常大,然后您无法向上滚动查看所有内容。

在将内容打印到终端之前,我想知道在我的XML数组上调用var_dump()是否会超出终端窗口显示。

1)有没有办法获得将从var_dump($my_xml_array)显示的行数?

2)你有什么建议吗?

2 个答案:

答案 0 :(得分:1)

您应该使用var_export而不是var_dump,这允许您将其输出存储在变量中,而不是使用以下内容进行打印:

$var_out = var_export($some_var, true);

// now check & compare size of $var_out with terminal size

答案 1 :(得分:0)

两个步骤:

  1. 使用exec()调用获取终端中的行数 tput lines

  2. 使用var_export()作为anubhava提及来获取var_dump的大小。

  3. 把这两个放在一起继续。

    <?php
    
    /** 
     * get lines of terminal
     */
    exec("tput lines", $exec_return);
    $number_of_terminal_lines = $exec_return[0];
    
    /** 
     * get lines of var dump
     */
    
    $test_array = array("foo"=>"bar", "baz"=>"quux");
    
    $test_array_var_dump_string = var_export($test_array,true);
    
    $test_array_var_dump_string_lines = substr_count( $test_array_var_dump_string, "\n" );
    
    print "number of lines in terminal $number_of_terminal_lines\n";
    print "number of lines in var dump $test_array_var_dump_string_lines\n";
    

    希望这可以解决问题!