回显 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
.
我已经为 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
.