试图找到一个类似的问题但没有出现。如果您发现任何相关请告诉我,我会关闭这个。 好的,我有下一个代码片段:
$fruits = ['Banana', 'Kiwi', 'Apple'];
$fruits_no = count($fruits);
现在假设我们需要检查是否有任何值存储在Array中,或者在进行任何进一步的语句之前是否为NULL / Empty。为此我有两个可能的IF:
if ($fruits_no > 0) { }
或
if ($fruits) { } // Evaluates to TRUE since any positive Integer is TRUE
我的问题是,从绩效角度来看,这两者中哪一个更好?
答案 0 :(得分:3)
在我看来,检查数组是否为空的最佳方法是使用empty()
。例如:
if(!empty($fruits))
{
// $fruits is not empty.
}
答案 1 :(得分:1)
您的问题不够明确,但我会留下多个选项。
首先,如果你想检查数组是否(不)是空的,那么PHP中就有empty()
。请注意,在PHP 5.5之前,这不能与表达式一起使用 - 因此,如果您的数据是某些表达式的结果,那么在以前的PHP版本中这将是错误。
其次,空数组与具有空值的数组不同。例如,
$a = [];
$b = [''];
var_dump(empty($a), empty($b));//true, false
- 你应该决定做什么。幸运的是,有一种简单的方法可以转换数组并消除空值。这是array_filter()
:
$fruits = ['', 0];
var_dump(array_filter($fruits));//array(0) { }
因此,您可以使用它并与empty()
检查结合使用。这就是为什么我已经提到empty()
的版本依赖行为 - 在PHP 5.5中这样的检查可以这样做:
if(!empty(array_filter($fruits)))
{
}
- 但不是在PHP< = 5.4。在这些版本中,您必须在应用array_filter()
empty()
的结果存储在单独的变量中
答案 2 :(得分:0)
检查您的示例的可能条件。
<?php
$fruits = ['Banana', 'Kiwi', 'Apple'];
if($fruits["0"])
{
/* Present */
}
if($fruits["0"] !="")
{
/* Present */
}
if(isset($fruits["0"]))
{
/* Present */
}
if($fruits["0"] == NULL)
{
/* Not Present */
}
if($fruits["0"] == "")
{
/* Not Present */
}
?>