13

我有一个返回数组的函数,并传递给 foreach 即

foreach(function() as $val)

由于我要返回的数组是在一系列 if 语句中声明的,因此如果所有 if 语句都被评估为 false,我需要返回一个空数组。这是正确的方法吗?

if (isset($arr))
  return $arr;
else 
  return array();
4

2 回答 2

14

我建议$arr = array();在函数的最顶部声明​​,这样您就不必担心它。

如果您在返回前立即进行检查,我建议您这样做isset。您使用的方式foreach取决于返回的数组。例如,如果$arr设置为一个数字,那么它仍然有效。您还应该检查is_array(). 例如:

if (isset($arr) && is_array($arr))
    return $arr;
else 
    return array();

或者在一行中:

return (isset($arr) && is_array($arr)) ? $arr : array();

但是,就像我说的,我建议改为在最顶部声明​​数组。它更容易,您不必担心。

于 2012-12-11T01:27:12.617 回答
2

为避免复杂性,只需

return [];
于 2019-03-03T14:12:21.463 回答