搜尋

首頁  >  問答  >  主體

標題重寫為:"參數無效: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粉546138344451 天前431

全部回覆(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
  • 取消回覆