Invalid argument supplied for foreach()でWarningエラーが出たので出ないようにした

Invalid argument supplied for foreach()でWarningエラーが出たので出ないようにした wordpress

Advanced Custom Fieldsを使って繰り返しフィールドの値を取得しようとしてたら、Warningが出ました。

出ないようにしたいと思います。

解決

配列データが入っているか確認する。
強制的に配列データにする。

Invalid argument supplied for foreach()が出る理由

//▼以下の$rowを処理しようとしたら、Warningが出ました
foreach($table as $row){
    $rowを処理
}

foreachループに無効な引数が渡された場合にInvalid argument supplied for foreach() Warningが出ます。配列ではない値やnullなどの反復処理できないデータ型がforeachループに渡されたときに発生します。

foreachループの前に使用する配列を確認

//▼配列データが入っているか確認の場合
if(is_array($table)){
    foreach($table as $row){
        $rowを処理
    }
}

foreach()は配列データでないといけないんでした。
今回は配列データが入っているか確認して、そもそも配列データを渡すようにする方で対処しました。他にキャストする方法もあります。

配列データにキャストする方法

//▼強制的に配列データにする場合
foreach((array)$table as $row){
    $rowを処理
}

コメント

タイトルとURLをコピーしました