为什么print返回(int)1?

时间:2011-05-18 07:44:57

标签: php

我知道echo()print()做同样的事情。但print的返回值为(int) 1

问题是:

  1. 为什么总是返回(int)1?
  2. 我们可以用return(int)1做什么?

6 个答案:

答案 0 :(得分:9)

print是一个函数,可以在表达式中使用,而echo是一种语言结构,只能在行的开头使用。

 echo print(print(print(print(123)))), print(4);

将print作为函数提供的真实用例是允许在表达式中使用它。例如,作为调试功能:

 if (($a == $b) and print("It's true") and $c) {

甚至

 return TRUE and print("right");

答案 1 :(得分:6)

为什么总是返回(int)1?

最有可能表示成功,因此您可以将其解释为值TRUE

返回(int)1可以做什么?

在将来的代码中,而不是做

$i++;

你可以做到

$i = $i + print("Hello World!\n");

(可能会产生轻微的副作用。)

答案 2 :(得分:3)

正如其他人已经提到的那样,print是伪函数(返回值而不是实函数),这使得它在表达式中有效。所以你可以编写这样的古怪代码来混淆维护者:)

$success = doSomethingThatCanPossiblyFail();
if ($success || !(print "Failed to do that! Not going to do the follow up")){ 
  //success
  nowDoTheFollowupThing();
} 

Just make sure the maintainers don't know where you live

答案 3 :(得分:2)

这只是一个小功能,允许您在条件下使用打印,例如:

if ((print "angry") && (print "mammoth") || (print "will stomp you"))
{
   // always executed
}

现在有什么用?不知道。

答案 4 :(得分:0)

在实际 计算的情况下,您可以返回值。

示例:

for ( $i = 0; $i < 10; $i += print "$i<br>" );

您可以在此处结合打印和计数。

答案 5 :(得分:-1)

如果打印成功,

print始终返回1。否则它将返回0。 在echo中我们可以显示打印功能的成功或失败。

echo print(1); // 11

如果我们单独写print(1),它将打印给我们1。

print(1); // 1

更好地了解的一个例子。

function sum($a,$b)
                    {
        echo $a+$b;
        if($a+$b == true)
                         {
            return 1;

                         }
        else{ return 0;}
                      }

//现在我们调用函数

sum(3,1);//4
echo "<br>";
echo sum(3,1);// 41
echo "<br>";
sum('abc','xyz');// 0
echo "<br>";
echo sum('abc','xyz');//00

此代码的工作方式与打印功能相似