print()总是返回1,有实际用途吗?

时间:2013-05-23 08:38:58

标签: php

命令echo不返回任何内容。但打印返回1.始终。 返回1的实际用途是什么?当然可以在表达式中使用它,但如果总是如此则表示无用,并导致使用更多码?

<?php
unset($empty);
if(print ($empty)){
    echo "Yep sure thing. Print strikes again with a ", "1.";
}
?>

它不应该总是返回与下面相同的结果,那么重点是什么呢?

<?php
print ($empty);
echo "Yep sure thing. Print strikes again with a ", "1.";
?>

这个问题是关于返回1而不是“Echo允许回显多个字符串,用逗号分隔,而打印不是”等等。

4 个答案:

答案 0 :(得分:3)

print总是在现实世界中返回一个。如果您尝试执行Inception,则可以设计始终返回零的print函数。这样,您可以查看您是在梦中还是现实世界。

但实际上,使用print的返回值与使用true相同。无限循环,打印调试信息等都是非常引人注目的用途,但它们是糟糕的设计(接近疯狂),应该避免使用。

答案 1 :(得分:2)

由于结果总是真实的,你可以用这样的表达式将它链接在一起:

if (print('debug stuff') && $a == 1) {
    // do stuff
} elseif (print('debug another') && $a > 56) {
    // do stuff
}

在评估条件时,它将像一种不影响结果的调试一样工作。

或者,在无限循环中使用:

while(print('still in the loop')) {
    // do something very exciting
}

虽然这些是echo无法做到的事情(它会导致解析错误),但它的用处基本上只限于测试和调试阶段而不是运作阶段。

答案 2 :(得分:1)

我看不到任何有用的表达方式。但我可以创造一些奇怪的东西:

对于循环短打印机:

for($i=0; $i<100; $i+=print($i.')<br/>')) ;

while循环打印计数器:

//$result is some db result
$rowCounter = 0;
while($row = $result->fetchAssoc()) {
    $rowCounter += print($row['column']);
}

答案 3 :(得分:0)

**echo**

No return value
Outputs one or more strings separated by commas

  e.g. echo "String 1", "String 2"

**print**

Returns 1, so it can be used in an expression
Outputs only a single string

e.g。 if((print“foo”)&amp;&amp;(print“bar”))