问题出在标题中.
我想我们大多数人都是用php学习的echo "string";.虽然常见,但我想知道为什么我们使用它与任何其他功能如此不同.
那我们为什么要:
echo "Some String";
代替
echo("Some String");
为什么两者都存在并且行为不同?有没有提到为什么做出这个选择?
编辑:我看到我的问题充斥着downvotes和upvotes.在任何一种方式投票时都要有建设性.
人们参考php文档,声明echo是一种语言结构,因此使用的方式不同.但在这种情况下,既然我们都可以将它用作构造和功能:这是首选方法?为什么它只应该是一种语言结构而实现两种方式呢?
编辑2:同上差不多计数require,require_once,include和include_once.我在网上找不到任何解释 - 为什么这些结构也实现了功能性(在echo()的情况下,以一种有缺陷的方式).
来自php.net:
echo实际上不是一个函数(它是一个语言结构),所以你不需要使用括号.
如果要将多个参数传递给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
?>
Run Code Online (Sandbox Code Playgroud)
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
?>
Run Code Online (Sandbox Code Playgroud)
UPDv2:
作为include(同样适用于require,require_once和include_once),它可能有一个返回值.例如:
fileA.php:
<?php return 1; ?>
Run Code Online (Sandbox Code Playgroud)
fileB.php:
<?php return 'abc'; ?>
Run Code Online (Sandbox Code Playgroud)
测试:
<?php
header('Content-Type: text/plain');
echo (include 'fileA.php'); // one way
echo PHP_EOL;
echo include('fileB.php'); // another way
?>
Run Code Online (Sandbox Code Playgroud)
显示:
1
abc
Run Code Online (Sandbox Code Playgroud)
它在php.net的例子#4和#5中提到过.
因为表达式include 'fileA.php' == 'OK'不明显(根据运算符优先级),您应该将它们括在括号中,或者使用"类似函数"的方法:(include 'fileA.php') == 'OK'或include('fileA.php') == 'OK'.
| 归档时间: |
|
| 查看次数: |
1327 次 |
| 最近记录: |