为啥打印和回声在“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”循环中表现不同[重复]的主要内容,如果未能解决你的问题,请参考以下文章

为啥此代码会根据缩进打印出不同的内容?

PHP - 为啥回声打印它像零? [复制]

为啥我的 for 循环在 AWK 中运行和重置?

终端命令:带有回声的 For 循环

为啥 R 对象不在函数或“for”循环中打印?

在 For 循环中打印变量 [重复]