为啥打印和回声在“for”循环中表现不同[重复]
Posted
技术标签:
【中文标题】为啥打印和回声在“for”循环中表现不同[重复]【英文标题】:Why do print and echo behave differently in a "for" loop [duplicate]为什么打印和回声在“for”循环中表现不同[重复] 【发布时间】:2015-08-23 07:15:36 【问题描述】:如果我在这段代码中使用print
:
<?php
for($i = 1; $i <= 3; print $i . "\n")
$i++;
?>
我看到这样的输出:
2
3
4
但是当我使用echo
时,代码不起作用:
<?php
for($i = 1; $i <= 3; echo $i . "\n")
$i++;
?>
我看到这个错误:
PHP 解析错误:语法错误,意外的 'echo' (T_ECHO),在第 3 行的 /media/datos/xampp/htdocs/temp/1.php 中期待 ')'
我的问题是:
为什么我可以在for
循环中使用print
作为第三个表达式,但在使用echo
时却不能,为什么它们的行为会有所不同?
参考资料:
http://php.net/echo http://php.net/print【问题讨论】:
可能是因为print
返回了一个值;而echo
不返回任何值......并且表达式需要一个值
@MarkBaker 直接来自文档print is not actually a real function (it is a language construct)
@AdrianCidAlmaguer $i++
确实 给出一个值.... 就像所有运算符 An operator is something that takes one or more values (or expressions, in programming jargon) __and yields another value (so that the construction itself becomes an expression)__.
@AdrianCidAlmaguer - 任何没有显式return
的用户定义函数都将返回null
,即valid value in PHP,print
返回一个整数,这是一个有效值... .. echo 返回void
,这不是一个值
@Fred-ii- 在这种情况下,我像 php 1.php 一样从 linux 中的命令行运行 php 进行测试,以查看我使用的新行 " \n"
【参考方案1】:
表达式。 print() 的行为类似于您可以执行的函数: $ret =打印“你好世界”; $ret 将是 1。这意味着 print 可以用作 echo 不能的更复杂表达式的一部分。一个 PHP 手册中的示例:
$b ? print "true" : print "false";
我的部分答案是以下答案的一部分。我想这就是你问题的答案。最重要的部分是 print()
的行为类似于函数
看到这个答案:https://***.com/a/234255/1848929
echo
呢:
注意:因为这是一个语言结构而不是一个函数,它 不能使用变量函数调用。
请参阅此页面上的注释部分:http://us2.php.net/manual/en/function.echo.php
【讨论】:
以上是关于为啥打印和回声在“for”循环中表现不同[重复]的主要内容,如果未能解决你的问题,请参考以下文章