我需要替换出现的 IF 语句中的 count($variable) 和 !empty($variable) 所以而不是
if(count($variable)){
}
我想使用
if(!empty($variable)){
}
在确保结果始终相同的情况下始终更换它是否安全?
最佳答案
Test it :
foreach (['', null, 0, 0.0, '0', false, [], new stdClass, 'foo', 1, true, ['bar' => 'baz']] as $val) {
var_dump($val, count($val), !empty($val));
echo '-------------', PHP_EOL;
}
这些情况有所不同:
string(0) ""
int(1)
bool(false)
-------------
int(0)
int(1)
bool(false)
-------------
float(0)
int(1)
bool(false)
-------------
string(1) "0"
int(1)
bool(false)
-------------
bool(false)
int(1)
bool(false)
此外,count
将触发 undefined variable 的错误。在 PHP 7.2+ 上,count
还会针对任何非 Countable
值(基本上是除 array
或 类之外的所有内容)触发错误。实现可数
)。
因此,如果您可以保证您的变量始终是一个数组,那么没有什么区别。如果您的变量可以是数组以外的任何内容(包括 undefined variable ),那么您将看到不同结果和触发错误之间的任何位置。
如果您希望变量存在并且是一个数组/可数
,您应该更喜欢 count
或只是 if ($variable)
(因为空数组也是假的),以便在您的值违反您的期望时获取正确的错误消息。
关于php - PHP 中 !empty($variable) 和 count($variable) 的 bool 结果总是相等吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58853594/