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で出力する際のエラーについてです。

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

回答の条件
  • 1人3回まで
  • 登録:2007/05/09 14:40:29
  • 終了:2007/05/16 14:45:03

回答(3件)

id:GEN111 No.1

GEN111回答回数472ベストアンサー獲得回数582007/05/09 14:57:43

ポイント27pt

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

if ($data == null) {
  echo '該当するデータはありません' ;
}
else {
  foreach ($data as $key) {
    echo $key['title'];
  }
}
id:tokyosmash

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

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

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

2007/05/09 15:03:28
id:Kiske No.2

mitz回答回数39ベストアンサー獲得回数22007/05/09 18:10:53

ポイント27pt
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;(変数が宣言されているが、クラスの中で値が設定されていない)

id:tobeoscontinue No.3

tobeoscontinue回答回数213ベストアンサー獲得回数532007/05/09 23:03:45

ポイント26pt

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


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

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

コメントはまだありません

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません