ブログ

  • 【PHP8.x環境】Warning: Undefined array key 0〜が出てしまう件は、isset() 関数を使用して要素が存在するかを事前に確認してから処理をする

    【PHP8.x環境】Warning: Undefined array key 0〜が出てしまう件は、isset() 関数を使用して要素が存在するかを事前に確認してから処理をする

    PHP8.x環境がレンタルサーバーなどで使えるようになってきましたね。

    これまでもPHP5.xからPHP7.xにバージョンが上がった際など、今まで動いてきたソースコードでエラーが出る事例は多数ありました。

    この度タイトルまんまですが「Warning: Undefined array key 0〜」が出て処理がうまくいかない局面に遭遇し、isset() 関数を使用して要素が存在するかを事前に確認してから処理をするというのをChat GPT教わった次第です。

    <php?
    //記事内の最初に出てくる画像素取得する
    function catch_that_image() {
      global $post, $posts;
      $first_img = '';
      ob_start();
      ob_end_clean();
      $output = preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $post->post_content, $matches);
      $first_img = $matches [1] [0];
      if(empty($first_img)){
        $first_img = get_template_directory_uri() . '/images/img_noimages.jpg';
      }
      return $first_img;
    }
    ?>

    上記のようなソースコードがあった場合PHP8.x環境では「$matches [1] [0]」の要素が存在しないという理由でエラーが出てしまいます。

    そこで、isset() 関数で「$matches [1] [0]」が存在した場合に処理をするというように(Chat GPTが)書き換えました。

    <?php
    //記事内の最初に出てくる画像素取得する
    function catch_that_image() {
      global $post, $posts;
      $first_img = '';
      ob_start();
      ob_end_clean();
      $output = preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $post->post_content, $matches);
      if (isset($matches[1][0])) { //$matches[1][0]が存在するか判定
        $first_img = $matches[1][0];
      }
      if (empty($first_img)) {
        $first_img = get_template_directory_uri() . '/images/img_noimages.jpg';
      }
      return $first_img;
    }
    ?>

    便利ですねChat GPT


    2026/01/29 追記:

    Geminiでアイキャッチを生成したので追加した。

  • Hello world!

    Hello world!

    おはよう世界。

    このサイトではWeb関係、特にWordpressのテーマ制作についての覚書などを投稿します。

    noteとかでもいいのかもだけど、自作のテーマを作っていきたいので、実際の環境があった方が色々捗るのではないかと、ドメインを取得してサーバーもレンタルしてみた。


    2026/01/29 追記:

    Geminiでアイキャッチを生成したので追加した。