7

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

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

4 回答 4

16

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

var_dump($data);

但是如果你想要格式化数据,这里你需要使用<pre>标签:

echo '<pre>';
print_r($data);
echo '</pre>';
于 2013-02-07T04:20:38.780 回答
3

var_dump() 直接回显输出,因此如果要将其捕获到变量以提供自己的格式,则必须使用输出缓冲区:

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

完成此操作后,变量 $s 现在包含 var_dump() 的输出,因此我们可以安全地使用:

   echo "<pre>" . $s . "</pre>";
于 2013-02-07T04:49:06.257 回答
3

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

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

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

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

于 2014-05-07T08:32:17.243 回答
2

好吧,print_r()用于打印数组,但为了以漂亮的方式显示数组,您还需要 HTML 标记。

只需执行以下操作:

echo "<pre>";
print_r($data);
echo "</pre>";
于 2013-02-07T04:13:05.383 回答