问题在于标题。
我认为我们大多数人在PHP中的程序都学会了echo "string";
。虽然常见,但我想知道为什么我们使用它与任何其他功能如此不同。
那么我们为什么要这样做:
echo "Some String";
而不是
echo("Some String");
为什么两者都存在并且行为不同?有没有提到这个选择的原因?
编辑:我看到我的问题充斥着downvotes和upvotes。在任何一种方式投票时都要有建设性。
人们参考php文档,声明echo是一种语言结构,因此使用的方式不同。但在这种情况下,既然我们都可以将它用作构造和功能:这是首选方法?为什么它应该是两种方式实现,而它应该只是一种语言构造?
修改2 :与上述内容相同,非常重要require
,require_once
,include
和include_once
。我在网上找不到任何解释 - 为什么这些结构也实现了功能性(在echo()的情况下,以一种有缺陷的方式)。
答案 0 :(得分:9)
来自php.net:
echo实际上并不是一个函数(它是一种语言结构),所以你 不需要在括号中使用括号。
如果要传递多个参数来回显参数 不得括在括号内。
示例(自PHP 5.4.14
起):
<?php
header('Content-Type: text/plain');
echo(1); // < works fine
echo(1, 2, 3); // < Parse error: syntax error, unexpected ',' on line 6
echo 1; // < works fine
echo 1, 2, 3; // < works fine
?>
的 UPDv1:强> 的
注意:因为这是一种语言结构,而不是一种功能 无法使用变量函数调用。
<?php
header('Content-Type: text/plain');
$print = 'print_r';
$print(1); // < works fine
$echo = 'echo';
$echo(1); // < Fatal error: Call to undefined function echo() on line 8
?>
的 UPDv2:强> 的
截至include
(同样适用于require
,require_once
和include_once
),它可能有 return值< / EM> 即可。例如:
fileA.php:
<?php return 1; ?>
fileB.php:
<?php return 'abc'; ?>
测试:
<?php
header('Content-Type: text/plain');
echo (include 'fileA.php'); // one way
echo PHP_EOL;
echo include('fileB.php'); // another way
?>
节目:
1
abc
在php.net的例子#4 和#5 中提及。
因为像include 'fileA.php' == 'OK'
这样的表达式不明显(根据operator precedence),您应该将它们括在括号中,或者使用“类似函数”的方法:(include 'fileA.php') == 'OK'
或{{1} }。
答案 1 :(得分:2)
来自PHP文档
echo实际上并不是一个函数(它是一种语言结构),所以你 不需要使用括号。回声(与其他一些不同 语言结构)不像一个函数,所以它不能 总是在函数的上下文中使用。另外,如果你想要的话 要将多个参数传递给echo,参数一定不能 括在括号内
这不是一个功能,因此没有括号
答案 2 :(得分:0)
因为它是一个语句(语言结构),它不是一个函数。因此,要区分函数和语句,就像这样使用它。