理解php中的三元运算符

时间:2016-03-30 11:14:53

标签: php arrays

我希望有人可以向我解释一下是什么? -1:1;在下面的三元运算符中意味着什么?非常感谢

<?php
 $people = array(
 array( "name" => "hank", "age" => 39 ),
 array( "name" => "Sarah", "age" => 36 ),
 );
 usort( $people, function( $personA, $personB ) {
 return ( $personA["age"] < $personB["age"] ) ? -1 : 1;
 } );

 print_r( $people );

3 个答案:

答案 0 :(得分:1)

三元运算符逻辑是使用(condition) ? (true return value) : (false return value)语句来缩短if/else结构的过程。

因此,在您的情况下,if/else将类似于以下代码:

if($personA["age"] < $personB["age"]) {
   return  -1 ;
}
else{ 
   return 1;
}

有关详细信息,请参阅:http://php.net/manual/en/language.operators.comparison.php#language.operators.comparison.ternary

对于usort函数,它将返回-1以指示$personA['age']中的值小于$personB['age']中的值。 有关详细信息,请查看how does usort work?http://php.net/manual/en/function.usort.php

更新1

提供给PHP中排序函数的usort中的回调有三个返回值:

0:  both elements are the same
-1 (<0): the first element is smaller than the second
1 (>0):  the first element is greater

现在,usort可能在内部使用某种quicksort或mergesort。对于每次比较,它会使用两个元素调用您的回调,然后决定是否需要交换它们。

答案 1 :(得分:1)

三元运算符是if else的简写。

三元运算符使代码更短更清晰。

三元运算符的基本语法是:

[assignment variable] = (condition) ? [if condition is true] : [if condition is false]

如果ifelse也只有一个语句,那么您可以使用三元运算符。

例如:

if (TRUE) {
 $a = 1;
}
else {
 $a = 0;
}

可以简单地写成:

$a = (TRUE) ? 1 : 0;

答案 2 :(得分:0)

它只是简写IF,ELSE本质上可以非常方便

$name = "Jack";

if($name == "Jack")
    echo "You are Jack";
else 
    echo "You are not Jack";

VS

echo ($name == "Jack") ? "You are Jack" : "You are not Jack";

我相信在php中你可以调用函数,如果条件是/不满足,所以在这个例子中如果$ ok为真,我们运行pass函数else fail函数。

($ok) ? pass() : fail();