搜索

首页  >  问答  >  正文

标题重写为:"参数无效:foreach() 提供的参数无效"

<p>对于我来说,经常遇到处理既可以是数组又可以是空变量的数据,并将这些数据提供给一些<code>foreach</code>。</p> <pre class="brush:php;toolbar:false;">$values = get_values(); foreach ($values as $value){ ... }</pre> <p>当你将一个不是数组的数据提供给foreach时,会收到一个警告:</p> <blockquote> <p>Warning: Invalid argument supplied for foreach() in [...]</p> </blockquote> <p>假设无法重构<code>get_values()</code>函数以始终返回一个数组(向后兼容性、不可用的源代码、或其他原因),我想知道避免这些警告的最干净和最有效的方法是什么:</p> <ul> <li>将<code>$values</code>强制转换为数组</li> <li>将<code>$values</code>初始化为数组</li> <li>用<code>if</code>包装<code>foreach</code></li> <li>其他(请提供建议)</li> </ul></p>
P粉546138344P粉546138344503 天前469

全部回复(2)我来回复

  • P粉635509719

    P粉6355097192023-08-22 10:45:45

    这个怎么样?它更简洁,而且都在一行中。

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

    回复
    0
  • P粉517814372

    P粉5178143722023-08-22 09:35:52

    个人而言,我觉得这是最干净的 - 不确定是否最高效,注意!

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

    我偏好的原因是当你根本没有任何内容时,它不会分配一个空数组。

    回复
    0
  • 取消回复