echo ('True'?(true?'t':'f'):'False'); 的输出可能是什么并解释为什么?

发布于 2025-01-03 08:16:06 字数 353 浏览 0 评论 0原文

可能的重复:
什么是 PHP ? : 调用了操作符,它做了什么?

我接受采访时遇到了一个非常基本的 PHP 问题,就像:

echo ('True' ? (true ? 't' : 'f') : 'False');

有人可以解释它将产生的输出的详细信息吗?

谢谢

Possible Duplicate:
What is the PHP ? : operator called and what does it do?

i was interviewed with a very basic question of PHP which was like:

echo ('True' ? (true ? 't' : 'f') : 'False');

Can Someone explain the details of the output it will yield?

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(7

花开半夏魅人心 2025-01-10 08:16:06

这将回显t

因为第一个它会检查第一个条件是否为真。
之后,在下一个条件中,它再次给出 true 并执行第一个条件,即 t

在if和else条件下会写成如下:

if('True') { //condition true and go to in this block
   if(true){ //condition true and go to in this block
      echo 't'; // echo t
   } else {
      echo 'f';
   }
} else {
   echo 'False';
}

This will echo t.

Because of first it will check the first condition that will give true.
and after that in next condition it again give true and execute the first condition that is t.

In if and else condition it will be write as follow:

if('True') { //condition true and go to in this block
   if(true){ //condition true and go to in this block
      echo 't'; // echo t
   } else {
      echo 'f';
   }
} else {
   echo 'False';
}
蓝海 2025-01-10 08:16:06

看看这个版本应该就清楚了:

if('True'){ // evaluates true
    if(true){ // evaluates tre
        echo 't'; // is echo'd
    }else{
        echo 'f';
    }
}else {
    echo 'False';
}

Looking at this version should make it clear:

if('True'){ // evaluates true
    if(true){ // evaluates tre
        echo 't'; // is echo'd
    }else{
        echo 'f';
    }
}else {
    echo 'False';
}
迷鸟归林 2025-01-10 08:16:06

除字符串 "0" 之外,非空字符串被视为真值。 计算

'True' ? (true ? 't' : 'f') : 'False'

PHP从左到右

  • 如下:表达式 'True' 被计算为布尔 true
  • 接下来,计算 ? 后面的表达式
    • 表达式 true 是... true!
    • 返回?后面的表达式,即t

令人惊讶的是,如果表达式为:

echo 'False' ? (true ? 't' : 'f') : 'False'

A non-empty string is considered a truthy value except the string "0". PHP evaluates

'True' ? (true ? 't' : 'f') : 'False'

from left to right as follows:

  • The expression 'True' is evaluated as a boolean true
  • Next, the expression following the ? is evaluated
    • The expression true is... true!
    • The expression following the ? is returned, which is t

Surprisingly, you'll still get t if the expression was:

echo 'False' ? (true ? 't' : 'f') : 'False'
倥絔 2025-01-10 08:16:06

由于 'True' 被评估为 true

if('True'){
    if(true){
        echo 't';
    }else{
        echo 'f';
    }
}else{
    echo 'False';
}

As 'True' is Evaluated as true

if('True'){
    if(true){
        echo 't';
    }else{
        echo 'f';
    }
}else{
    echo 'False';
}
把人绕傻吧 2025-01-10 08:16:06

内部括号将首先执行 true?'t':'f' 它将返回 't',它是一个字符串

现在外部条件将检查 echo ('True' ? 't ':'假')。这里 'True' 是一个“非空字符串”(隐式转换为 TRUE),因此它的计算结果为 true,并将返回 't'。

最终代码将是 echo ('t') ,它将简单地 echo t

The inner bracket will be executed first true?'t':'f' it will return 't' that is a string

Now outer condition will check for echo ('True' ? 't' : 'False'). Here 'True' is a "non empty string"(implicitly casted to TRUE), so it evaluate to true, and will return 't'.

Final code will be echo ('t') which will simply echo t

も星光 2025-01-10 08:16:06
echo ( // will echo the output
  'True'? // first ternary operation 'True' is considered true
    (true? 't':'f') // will go here for the second ternary operation
                    // true is also evaluated as true so it will echo 't'

  : 'False'); // never goes here
echo ( // will echo the output
  'True'? // first ternary operation 'True' is considered true
    (true? 't':'f') // will go here for the second ternary operation
                    // true is also evaluated as true so it will echo 't'

  : 'False'); // never goes here
旧人哭 2025-01-10 08:16:06

这:

'True'?(true?'t':'f'):'False'

可以写成

// Will always be true if String is not an Empty string. 
if('True'){ 
   // if (true) will always enter
   if(true){ 
      // t will be the output
      echo 't'; 
   }else{
      echo 'f';
}
else {
    echo 'False';
}

This:

'True'?(true?'t':'f'):'False'

May be written as

// Will always be true if String is not an Empty string. 
if('True'){ 
   // if (true) will always enter
   if(true){ 
      // t will be the output
      echo 't'; 
   }else{
      echo 'f';
}
else {
    echo 'False';
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文