Undefined indexエラーが出ないようにする対処法

kentomurata 62views 更新:2016年6月30日

以下のようにforeach文を回して配列を作るとき、値に何も入らないまま配列ができてしまうことがあります。

foreach ($posts as $post) {
  setup_postdata($post);
  $post_id = $post->ID;
  $post_customfields = get_post_custom($post_id);
  $array_post[$post_id] = array(
    'hoge1' => $post_customfields['hoge1'][0],
    'hoge2' => $post_customfields['hoge2'][0],
    'hoge3' => $post_customfields['hoge3'][0]
  );
}

foreach($post_ids as $post_id){
  echo $array_post[$post_id]['hoge2'];
}

値が入っていないものを参照しようとすると、Undefined indexというエラーが発生します。

空のときにはNULLを代入するよう処理に加えることで、このエラーが出ないようにすることができます。

function undefined_null($array, $key){
  $return = isset($array[$key])? $array[$key] : NULL;
  return $return;
}
foreach ($posts as $post) {
  setup_postdata($post);
  $post_id = $post->ID;
  $post_customfields = get_post_custom($post_id);
  $array_post[$post_id] = array(
    'hoge1' => $post_customfields['hoge1'][0],
    'hoge2' => undefined_null($post_customfields, "hoge2"),
    'hoge3' => $post_customfields['hoge3'][0]
  );
}

foreach($post_ids as $post_id){
  echo $array_post[$post_id]['hoge2'];
}

ログイン / 新規登録してコメントする

このソースコードをストックして後で利用したり、作業に利用したソースコードをまとめることができます。

こちらもお役に立つかもしれません