gpt4 book ai didi

PHP - 检查是否返回 false;

转载 作者:IT王子 更新时间:2023-10-28 23:55:12 25 4
gpt4 key购买 nike

只是一个简单的问题 - 我确定非常基础!

我有以下代码:

function checkThings($foo, $bar) {
...
if ($valid) {
return $results;
} else {
return false;
}
}

我目前正在做的另一端

$check = checkThings($foo, $bar);
if ($check === false) {
echo "Error";
} else {
echo $check;
}

下面的写法一样吗?

$check = checkThings($foo, $bar);
if (!$check) {
echo "Error";
} else {
echo $check;
}

如果两种方法都正确,哪种方法是首选?

谢谢:)

最佳答案

三等运算符是类型敏感的。所以当你检查时:

if ($check === false)

...只有当 $check 是 bool 值“false”时,它才会为真。鉴于

if ($check == false)

... 不是专门检查 bool 值 false,而是检查“假”值。 false,在PHP中,等于0,null是“falsey”,就像一个空字符串(""== false == null,但是""!== false !== null )。所以:

$check = 0;
if ($check == false)

... 计算结果为真。

! 前缀运算符等同于 ==。因此,当零需要是 bool 值 false 的离散值时,!== 运算符是不够的。

在此处查看比较运算符的文档:http://php.net/manual/en/language.operators.comparison.php

最佳做法是让您的条件检查尽可能具体。这不仅是为了避免在您的逻辑中出现潜在的疏忽,也是为了让代码对 future 的开发人员更易于维护。想象一下遇到这样一行代码:

if (check_something($variable)) {
// do stuff
}

我可以假设 check_something 函数返回一个 bool 值 true。但是,除非我去挖掘 check_something 函数,否则它可能也返回一个非空字符串,一个数字……谁知道呢!这样做更清楚:

if (check_something($variable) === true) {
// do stuff
}

现在,通过查看,我知道 check_something 函数预期返回一个真值。我可能不知道该函数的作用,但至少它返回的内容非常清楚。您随处可见的另一个常见示例:

if (!$_GET['value']) {
// do something
}

这是一个令人讨厌的问题。条件语句应该始终清楚地比较事物。所以,你想要做的是:

if (array_key_exists('value', $_GET) !== false && $_GET['value'] === '1') {
// do something
}

现在,您可以看出我不仅要检查查询字符串参数是否存在,还要检查它是否等于特定值。

总而言之,单个 ! 前缀运算符和 == 运算符很少有用,而且总是有歧义。最好以能够记录自身或可翻译成人类语言来表达逻辑的方式编写代码。在适当的情况下,使用 !===== 进行直接比较是一个好习惯、良好实践,并且最不可能在您的代码中产生意外结果。

关于PHP - 检查是否返回 false;,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6231650/

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