我希望有人可以向我解释一下是什么? -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 );
答案 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]
如果if
和else
也只有一个语句,那么您可以使用三元运算符。
例如:
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();