如何正确使用print_r或var_dump?

时间:2013-02-07 04:05:27

标签: php printing var-dump

我在调试时经常使用以下代码段:

echo "<pre>" . var_dump($var) . "</pre>";

我发现我通常会得到一个很好的可读输出。但有时我却不这样做。我现在特别烦恼的是这个例子:

<?php

$username='xxxxxx';
$password='xxxxxx';

$data_url='http://docs.tms.tribune.com/tech/tmsdatadirect/schedulesdirect/tvDataDelivery.wsdl';
$start=gmdate("Y-m-d\TH:i:s\Z",time());
$stop =gmdate("Y-m-d\TH:i:s\Z",time()+3600*24);

$client = new SoapClient($data_url, array('exceptions' => 0,
                                          'user_agent' => "php/".$_SERVER[SCRIPT_NAME],
                                          'login'      => strtolower($username),
                                          'password'   => $password));
$data = $client->download($start,$stop);

print_r($data);

?>

我当然不想透露我的凭据,但我被告知print_r在这种情况下将与我的通常代码段相同,实际上print_r和我的代码片段都不会生成除runon数据之外的任何内容,而根本没有格式化。我怎么能让它漂亮?!

4 个答案:

答案 0 :(得分:16)

var_dump总是在格式化数据中显示数组,但是额外的东西太多了

var_dump($data);

但如果您想要格式化数据,则需要使用<pre>标记

echo '<pre>';
print_r($data);
echo '</pre>';

答案 1 :(得分:3)

var_dump()echos直接输出,所以如果你想将它捕获到一个变量来提供你自己的格式必须使用输出缓冲区:

   ob_start();
   var_dump($var);
   $s = ob_get_clean();

一旦完成,变量$ s现在包含var_dump()的输出,所以可以安全地进行:

   echo "<pre>" . $s . "</pre>";

答案 2 :(得分:3)

当您需要有关任何变量的更多详细信息时,可以使用var_dump。

<?php 
    $temp = "hello" ;
    echo var_dump($temp);
    ?>

输出如下 string(5)&#34; hello&#34; 表示它打印变量的数据类型和字符串的长度以及变量中的内容。

而print_r($ expression)用于打印数据,如数组或任何其他无法通过echo语句直接打印的对象数据类型。

答案 3 :(得分:2)

嗯,print_r()用于打印和数组,但为了以漂亮的方式显示数组,你还需要html标签。

请执行以下操作:

echo "<pre>";
print_r($data);
echo "</pre>";