【问题标题】: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 时却不能,为什么它们的行为会有所不同?

参考资料:

【问题讨论】:

  • 可能是因为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 PHPprint 返回一个整数,这是一个有效值... .. echo 返回void,这不是一个值
  • @Fred-ii- 在这种情况下,我像 php 1.php 一样从 linux 中的命令行运行 php 进行测试,以查看我使用的新行 " \n"

标签: php for-loop printing echo behavior


【解决方案1】:

表达式。 print() 的行为类似于您可以执行的函数: $ret =打印“你好世界”; $ret 将是 1。这意味着 print 可以用作 echo 不能的更复杂表达式的一部分。一个 PHP 手册中的示例:

$b ? print "true" : print "false";

我的部分答案是以下答案的一部分。我想这就是你问题的答案。最重要的部分是 print() 的行为类似于函数

看到这个答案:https://stackoverflow.com/a/234255/1848929

echo呢:

注意:因为这是一个语言结构而不是一个函数,它 不能使用变量函数调用。

请参阅此页面上的注释部分:http://us2.php.net/manual/en/function.echo.php

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-29
    • 2013-11-03
    • 1970-01-01
    • 2019-12-23
    • 2018-02-04
    • 2016-06-05
    • 1970-01-01
    • 2015-02-15
    相关资源
    最近更新 更多