1. ホーム
  2. php

[解決済み】foreach()に与えられた引数が無効です。)

2022-02-09 10:18:55

質問

配列やNULL変数になるデータを扱うことがよくあります。 foreach を、これらのデータで作成します。

$values = get_values();

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

foreachに配列でないデータを投入すると、警告が出ます。

警告 でのforeach()に与えられた引数が無効です。

をリファクタリングすることはできないとして get_values() 関数が常に配列を返すようにする(後方互換性、ソースコードが入手できない、その他の理由)ために、これらの警告を避けるための最もクリーンで最も効率的な方法はどれかと考えています。

  • キャスティング $values を配列に変換します。
  • 初期化 $values を配列に
  • ラップする foreach を使用しています。 if
  • その他(ご意見をお聞かせください)

解決方法は?

個人的には、これが最もクリーンな方法だと思いますが、最も効率的かどうかはわかりません。

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

私の好みの理由は、どうせ何も持っていないのに空の配列を割り当てることがないことです。