PHP - IF语句最佳方案

时间:2014-03-19 09:57:34

标签: php performance

试图找到一个类似的问题但没有出现。如果您发现任何相关请告诉我,我会关闭这个。 好的,我有下一个代码片段:

$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

我的问题是,从绩效角度来看,这两者中哪一个更好?

3 个答案:

答案 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 */ 
}
?>