在 PHP 中返回 1,-1 和 0 有什么区别?它们意味着什么?我想知道的是,'return 1'是指真还是假?同样关于'return -1'和'return 0'。
4 回答
我怀疑您是在询问使用 with 的比较函数usort()
,因为这是唯一通常返回 1、-1 或 0 的地方。
在这种情况下,1
表示第一个值大于第二个值,-1
表示第一个值小于第二个值,0
表示值相等。尽管usort()
实际上并不要求您返回这些特定值——它只关心该值是正数、负数还是零。这允许您编写一个比较函数,例如:
function compare_f($a, $b) {
return f($a) - f($b);
}
如果您询问true
/false
上下文,请参阅http://php.net/manual/en/language.types.boolean.php。它说:
转换为布尔值时,以下值被视为 FALSE:
- 布尔值 FALSE 本身
- 整数 0(零)
- 浮点数 0.0(零)
- 空字符串和字符串“0”
- 一个元素为零的数组
- 具有零成员变量的对象(仅限 PHP 4)
- 特殊类型 NULL(包括未设置的变量)
- 从空标签创建的 SimpleXML 对象
其他所有值都被视为 TRUE(包括任何资源)。
这与 PHP 无关。这是关于外壳约定的。0
是“一切正常”的约定 其他数字表示有问题,但确切含义是特定于应用程序的
因此,如果您的脚本返回到 shell,exit(0);
调用者知道它是成功的,等等。
我猜您正在寻找的答案是这些值是“Truthy”和“Falsey”值。
它们不是现在的布尔true
值false
。if()
但是,出于或while()
陈述的目的,评估它们将等同于真值或假值。
这里有更多关于真、假、真、假的读物:
PHP 将评估0
asfalse
和1
as true
- 这意味着它的行为类似于布尔值。
if (1) echo 'true';
if (0) echo 'false';
// result: true
话虽如此,if(-1)
也将返回true,if(1000)
因为它已经说过它确实取决于上下文。