Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP理解三元运算符_Php_Ternary Operator - Fatal编程技术网

PHP理解三元运算符

PHP理解三元运算符,php,ternary-operator,Php,Ternary Operator,我仍然习惯于使用三元运算符,我发现这是一种有助于最小化代码的方法。如果它像下面的示例(示例1)一样简单,我就可以理解它 例1 这可以理解为:如果$name是'first',则使用'Fred'否则如果$name是'last'则使用'Dabo'否则使用'RAND()' 然而,我在另一个网站上看到了这一点(例2),这对我来说没有任何意义 例2 $score=10; $age=20; echo“考虑到你的年龄和分数,你是:”,($age>10?($score的吗?三元说,如果$>0 10,就认为80是一

我仍然习惯于使用三元运算符,我发现这是一种有助于最小化代码的方法。如果它像下面的示例(示例1)一样简单,我就可以理解它

例1 这可以理解为:如果
$name
'first'
,则使用
'Fred'
否则如果
$name
'last'
则使用
'Dabo'
否则使用
'RAND()'

然而,我在另一个网站上看到了这一点(例2),这对我来说没有任何意义

例2
$score=10;
$age=20;
echo“考虑到你的年龄和分数,你是:”,($age>10?($score<80?“落后”:“高于平均水平”):($score<50?“落后”:“高于平均水平”);//返回“您落后了”

<> P>那么,有人能用简单的语言向我解释这个三元运算符是如何用简单的语言读到

< P>的吗?三元说,如果$>0 10,就认为80是一个好的分数,否则认为50是一个好的分数。 <>而不是嵌套三元组,考虑将嵌套逻辑分解为它自己的辅助函数。我发现下面的代码更容易理解

function adult_score($score) {
    return $score > 80 ? "behind" : "above average";
}

function child_score($score) {
    return $score < 50 ? "behind" : "above average";
}

$score = 10;
$age = 20;
echo $age > 10 ? adult_score($score) : child_score($score);
功能成人评分($score){
返回$score>80?“落后”:“高于平均水平”;
}
功能儿童评分($score){
返回$score<50?“落后”:“高于平均值”;
}
$score=10;
$age=20;
echo$age>10?成人分数($score):儿童分数($score);

所以,你知道一个三元的,在
之前的部分是if语句,在
之间的部分是
如果是真的就去做,在
之后的部分是“如果是假的就去做”。因此,如果您使用三元组,并用if语句包装“if”部分,用大括号包装“true”和“false”,并用else替换
,您将得到以下结果:

if($age > 10){
    if($score < 80){
        return 'behind';
    } else { 
        return 'above average';
    }
} else {
    if($score < 50){
        return 'behind';
    } else {
        return 'above average';
    }
}
if($age>10){
如果($80分以下){
返回“后面”;
}否则{
回报率“高于平均水平”;
}
}否则{
如果($分数<50){
返回“后面”;
}否则{
回报率“高于平均水平”;
}
}

正如其他人所说,这是丑陋的,很难遵循。除非你的目标是让其他人难以遵循你的代码,否则不要这样做。求你了,不要。对于一次性if语句,它们很好,但很快就会变得混乱。帮你自己和你的代码的未来读者一个忙。

这是两个……两个……两个三元组合一!不要筑巢。只是不要。他们有自己的目标,但仅仅因为他们方便,并不意味着他们是一个普遍的问题解决者,想象一下,这个女孩不是在唱歌,而是在筑巢;-)
function adult_score($score) {
    return $score > 80 ? "behind" : "above average";
}

function child_score($score) {
    return $score < 50 ? "behind" : "above average";
}

$score = 10;
$age = 20;
echo $age > 10 ? adult_score($score) : child_score($score);
if($age > 10){
    if($score < 80){
        return 'behind';
    } else { 
        return 'above average';
    }
} else {
    if($score < 50){
        return 'behind';
    } else {
        return 'above average';
    }
}