Notice: Trying to access array offset on value of type boolエラーの発生原因と対処した方法

エラーメッセージ全文

Notice: Trying to access array offset on value of type bool in ファイルパス/ファイル名 on line 行目

エラー該当コード

$attachment_id = SCF::get_term_meta( $term_id, $taxonomy, $field_name );
$image_info = wp_get_attachment_image_src( $attachment_id, $size );
$image_url = $image_info[0];

上記はSmart Custom Fieldsプラグインから画像の情報を取得し、その画像のURLを取得するソースコードです。

実際の案件ではSmart Custom Fieldsプラグインで商品カテゴリーに登録した画像をforeachで取り出すために使用しています。

エラーメッセージの意味

PHPでarray(配列型)の要素にアクセスしようとした際に、配列ではなくbool(ブール型)の値にアクセスしようとしていることを示しています。

NoticeエラーなのでPHPプログラムの実行は停止されません。

エラーの原因

Smart Custom Fieldで画像を登録していない商品カテゴリーがある場合に$attachment_idが空になります。

そうなると$image_infoarray型ではなくbool型になってしまうため、エラーが発生します。

エラーを解決するには

$attachment_idが空でないことを確認してから$image_infoを出力すれば良いです。

したがって、ソースコードを下記に変更します。

$attachment_id = SCF::get_term_meta( $term_id, $taxonomy, $field_name );
if($attachment_id) {
    $image_info = wp_get_attachment_image_src( $attachment_id, $size );
    $image_url = $image_info[0];
}

まとめ

今回はNotice: Trying to access array offset on value of type boolエラーの発生原因と対処した方法について記事にしました。

Noticeエラーはデバッグモードにしなければ表示されませんが、無視せず1つずつ対処していくことによって、コードの品質やメンテナンス性を上げていきたいと思います。

他のPHPエラーの記事

他のPHPエラー

PHPのエラーの種類について解説しています。具体例や解決方法については順次更新していきます。

>お問い合わせはこちら

お問い合わせはこちら