gpt4 book ai didi

php - 在检查 bool 值的情况下,php 7 中的 <=> 如何响应?

转载 作者:行者123 更新时间:2023-12-04 14:05:43 25 4
gpt4 key购买 nike

正在研究 php 7,但 <=> 让我感到困惑。

大多数时候我使用条件运算符,它们用于 bool 情况(<=> 几乎,但不完全是,也能够返回 -1)。 (如果 X <=> Y)。所以我不确定在以下情况下会发生什么......

if ($x <=> $y) {
// Do all the 1 things
} else {
// Do all the 2 things
}

如果它前面有...,我能期待什么

$x = 0; $y = 1;

$x = "Carrot"; $y = "Carrot Juice";

$x = "Carrot Juice"; $y = "Carrot";

$x = array(carrot, juice); $y = "carrot juice";

肯定有足够多的案例让我对它会做什么感到困惑。

最佳答案

宇宙飞船运算符(以及其他 PHP 7 新增内容)在此处以通俗易懂的语言进行了解释:

https://blog.engineyard.com/2015/what-to-expect-php-7

它在提供给 usort 等函数的比较函数中最有用。 .

// Pre PHP 7
function order_func($a, $b) {
return ($a < $b) ? -1 : (($a > $b) ? 1 : 0);
}

// Post PHP 7
function order_func($a, $b) {
return $a <=> $b;
}

if 中用处不大,因为 if只检查值是真值还是假值,不区分表示排序的不同真值。如果您确实在 bool 上下文中使用它,它将被视为 true当值不同时(因为 1-1 不真实),false当它们相等时(因为 0 是错误的)。这类似于尝试使用 strcmp()stricmp()在 bool 上下文中,这就是为什么您经常看到

if (stricmp($x, $y) == 0)

使用数组与比较运算符的规则给出了 here (向下滚动到标有与各种类型的比较的表格)。将一个数组与另一个数组进行比较时,规则是:

Array with fewer members is smaller, if key from operand 1 is not found in operand 2 then arrays are uncomparable, otherwise - compare value by value

将数组与另一种类型进行比较时,数组总是更大。所以array('carrot', 'juice') <=> 'carrot juice'将是 1 .

关于php - 在检查 bool 值的情况下,php 7 中的 <=> 如何响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32618410/

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