foreach() に無効な引数が指定されました 質問する

foreach() に無効な引数が指定されました 質問する

配列または null 変数のいずれかになる可能性のあるデータを処理し、これらのデータをいくつかのものに入力することがよく起こりますforeach

$values = get_values();

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

配列ではないデータを foreach に入力すると、警告が表示されます。

警告: [...] の foreach() に無効な引数が指定されました。

関数をリファクタリングして常に配列を返すようにすることは不可能であると仮定するとget_values()(下位互換性、ソース コードが利用できない、その他の理由)、これらの警告を回避する最もクリーンかつ効率的な方法はどれか疑問に思います。

  • $values配列へのキャスト
  • $values配列への初期化
  • foreachを包むif
  • その他(ご提案ください)

ベストアンサー1

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

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

私がこれを好む理由は、そもそも何もない場合に空の配列を割り当てないからです。

おすすめ記事