gpt4 book ai didi

PHP 三元运算符说明

转载 作者:可可西里 更新时间:2023-10-31 22:10:26 27 4
gpt4 key购买 nike

我经常使用三元运算符,但我一直无法在文档中找到任何关于此的内容,而且我一直对此感到疑惑。

下面是一个可能的例子:

echo ($something->message ? $something->message : 'no message');

如你所见,如果 $something->message 是正确的,我们返回 $something->message,但为什么要写两次呢?有没有办法做这样的事情:

echo ($something->message ? this : 'no message');

现在我不太精通编程理论,所以前者不能用“this”之类的东西引用可能是有原因的,但为什么不呢?这不会简化三元运算符的使用吗?对于像我的例子这样的东西,它是非常无用的,但我们可以说它是

echo (function(another_function($variable)) ? function(another_function($variable)) : 'false');

我找不到任何方法来做到这一点,所以我假设这是不可能的,如果我错了请通知我,否则:为什么不呢?为什么这不可能,技术原因是什么,还是只是从未发生过的事情?我应该将它声明为一个变量然后针对该变量进行测试吗?

最佳答案

Since PHP 5.3, it is possible to leave out the middle part of the ternary operator. Expression expr1 ?: expr3 returns expr1 if expr1 evaluates to TRUE, and expr3 otherwise.

Source

例如

$used_value = function1() ?: $default_value;

相同

$check_value = function1(); //doesn't re-evaluate function1()
if( $check_value ) {
$used_value = $check_value;
} else {
$used_value = $default_value;
}

智者之言

如果您要依赖类型转换为 TRUE,了解什么将类型转换为 TRUE 以及什么不会。可能值得复习一下 PHP 的 type juggling并阅读 type conversion tables .例如 (bool)array()FALSE

关于PHP 三元运算符说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3580461/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com