为什么会这样(启用严格模式):
<? function test() { echo 'hello world'; } ?>
<?= test(); ?>
并且没有:
<?= echo 'hello world'; ?>
答案 0 :(得分:3)
鉴于
<?php
$foo = 'foo';
?>
然后这些都产生完全相同的输出,单词&#39; foo&#39;:
<?= $foo ?>
<?= 'foo' ?>
foo
<?php echo $foo ?>
无论&#34;论点&#34;在代码<?= ... ?>
内部,它得到输出。如果是函数调用,则执行该函数,其返回值为输出。如果它只是一个值(变量,固定字符串/整数),则输出该值。
echo
是语言构造,在某些情况下可以像函数调用一样对待,但 NOT 有返回值。所以
<?= echo $foo ?>
通过echo命令回显$foo
的值,但由于echo
本身没有返回值,因此不会回应任何其他内容。
现在,如果它是
function myecho($foo) {
echo $foo;
return $foo;
}
<?= myecho('foo'); ?>
然后你明白了:
foofoo
^^^---echo inside the function
^^^---- <?= implicit echo
作为输出。
答案 1 :(得分:2)
因为它调用函数然后输出函数的返回值。由于返回值为空,因此内部的回声被调用,然后“没有”。 (NULL
)被打印出来。