人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHPのエラー処理(配列foreach)

$dataは配列です。

<?php
foreach ($data as $key) {
echo $key['title'];
}
?>


もし$dataに何も入っていないとエラー文が出ます。Warning: Invalid argument supplied for foreach()以下省略

このエラー文を回避するだけではなく、「該当するデータはありません」と表示させるにはどうすればいいでしょうか?

http://q.hatena.ne.jp/1178682864
こちらに関連質問させて頂きましたが、今回はforeachで出力する際のエラーについてです。

プログラマのみなさんよろしくお願いします。

●質問者: tokyosmash
●カテゴリ:インターネット ウェブ制作
✍キーワード:AS echo Key PHP Warning
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● GEN111
●27ポイント

エラーが起こる前に正当かどうかチェックしてください。

if ($data == null) {
 echo '該当するデータはありません' ;
}
else {
 foreach ($data as $key) {
 echo $key['title'];
 }
}
◎質問者からの返答

回答ありがとうございます。

null判定するのですね、勉強になります。

これで一通りエラー文回避する事が出来そうです。


2 ● mitz
●27ポイント
if(is_null($data)) {
 echo '該当するデータはありません' ;
}
else {
 foreach ($data as $key) {
 echo $key['title'];
 }
}

またif文の条件をif(!empty($data))とするとnull以外もチェックします。

対象となるのは下記の値です。

"" (空文字列)

0 (0 は整数)

"0" (0は文字列)

NULL

FALSE

array() (空の配列)

var $var;(変数が宣言されているが、クラスの中で値が設定されていない)


3 ● tobeoscontinue
●26ポイント

nullだけの判定では$dataが配列で無い場合はやはり同じワーニングがでますのでis_array()での判定のほうがいいように思います。


判定で処理を分岐するのも手ですが、配列でなければ配列にしてしまうのも手です。

if (! is_array($data)) {
 $data = array(array('title'=>'該当するデータはありません'));
}
foreach ($data as $key) {
 echo $key['title'];
}
関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ