为 foreach() 提供的参数无效

2022-08-30 05:57:34

我经常遇到这样的情况,处理可以是数组或 null 变量的数据,并为某些变量提供这些数据。foreach

$values = get_values();

foreach ($values as $value){
  ...
}

当您使用不是数组的数据向 foreach 提供数据时,您会收到一条警告:

警告:在 [...] 中为 foreach() 提供的参数无效

假设不可能重构函数以始终返回数组(向后兼容性,不可用的源代码,无论其他原因如何),我想知道哪种是避免这些警告的最干净,最有效的方法:get_values()

  • 强制转换为阵列$values
  • 初始化为数组$values
  • foreachif
  • 其他(请建议)

答案 1

就个人而言,我发现这是最干净的 - 不确定它是否是最高效的,介意!

if (is_array($values) || is_object($values))
{
    foreach ($values as $value)
    {
        ...
    }
}

我更喜欢的原因是,当你没有任何东西可以开始时,它不会分配一个空数组。


答案 2

这个怎么样?更干净,都在一行。

foreach ((array) $items as $item) {
 // ...
 }

推荐