🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

4538閲覧

Trying to access array offset on value of type null 回避の方法

pup-ganbaru

総合スコア29

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2020/12/07 11:08

array_mapでを使って二つの配列を交互に表示させる機能を実装しました。

要素の片方(site_name)が減った時に 以下のコードの行でTrying to access array offset on value of type null が出てしまいます。
echo '<p class="u-mv10">'.$site['site_name'].'</p>';

array_mapは要素数の多い方に合わせるということはリファレンスを見て理解しましたが、プログラムが増えた要素(NULL)にアクセスしようとしてるのを回避する方法がわかりません

ここは別にNULLでいいんだってことをプログラムに教えてあげる方法はありますか?

<?php array_map( function ($site, $old_email) { echo '<p class="u-mv10">'.$site['site_name'].'</p>'; if(isset($old_email->cast_email)){ echo "<input type=\"text\" name=\"cast_email[]\" value=\"{$old_email->cast_email}\" class=\"c-form_input\">"; }else{ echo "<input type=\"text\" name=\"cast_email[]\" value=\"\" class=\"c-form_input\">"; } }, $users->sites->toArray(), $cast_emails ); ?>

試したこと

$site['site_name']がNULLの時はechoで空文字を返す・
それ以外は

echo '<p class="u-mv10">'.$site['site_name'].'</p>';

を返すと記述したのですが、当たり前ですが、条件文の$site['site_name']にアクセスしたときにまたエラーが出てしまいます。

どなたか回避方法を知っている方がいらっしゃればご教示いただけると幸いです

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

$siteがnullである可能性があるので

$site != null ? $site['site_name'] : "Nullだよ"

みたいな感じでとりあえず避ける事は可能です。
nullでないべきなら別の問題があると思われます

投稿2020/12/08 04:18

mikkame

総合スコア5036

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

pup-ganbaru

2020/12/10 09:55

ありがとうございます!助かりました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問