回显 var_dump 如何有效?

How is echoing a var_dump valid?

我已经为 error_reporting、

设置了 E_ALL

今天,当我审查我的代码时,我看到了类似的东西:

$test = '';
echo var_dump($test);

虽然据我所知这不会造成任何问题,但我很好奇这是怎么回事? error_reporting 没有显示任何内容。

就这样放任不管会有什么坏处吗?

编辑:

不是null,下面也可以:

$test = array('test');
echo var_dump($test);

var_dump 没有 return 任何东西,所以你什么也没回应。这有点奇怪,但是 PHP 只是接受这个,但那是因为 void 函数实际上 return null 在 PHP 中。 null(意思是'nothing')可以赋值给一个变量,也可以被回显。如果回显null,则没有输出。

所以虽然代码有效,但它没有任何东西。它只是让 var_dump 回显它自己的输出,但是显式 echo 关键字不会添加任何值。

再举一个例子,当你用你自己的函数做这个时,也会发生同样的情况。例如,如果有人会误解一个函数,您可能会看到这样的代码:

// Function has no return value but echoes all by itself.
function outputGreeting() {
  echo 'hello world';
}

// User thought function would return the value, and uses an obsolete echo.
echo outputGreeting();

代码与函数结果相呼应(无效),代码似乎仍然有效。

我本来以为你说的是​​空字符串。

var_dump() 本身并没有明确地 return 任何东西,但这并不意味着它什么都不是,或者函数没有 returned。 var_dump() returns 的值是 null,就像每个没有 return 值的函数一样。

这就是你所做的:

$val = '';
echo null;
var_dump($val);

让我们用我们自己的函数这样展示它:

function myfunc() {
    // I do nothing
}

$val = myfunc();
var_dump($val);  // <-- prints 'null' to the screen

这证明了我们自己的函数(和var_dump()本身)returns null.