PHP未定义的偏移通知

时间:2015-04-30 08:13:17

标签: php arrays

我有以下条件:

if ( 
    $items[ $count + 1 ]->menu_item_parent != $parent_id && 
    $submenu && 
    $items[ $count + 1 ]->menu_item_parent != $item->ID) {

    //something

}

我收到通知:

Undefined offset: 13

所以我假设$items数组中不存在13,并且可以通过in_array检查来避免它。但是我不确定如何在上述条件下使用该功能。

4 个答案:

答案 0 :(得分:7)

if ( isset($items[ $count + 1 ]) && 
    $items[ $count + 1 ]->menu_item_parent != $parent_id && 
    $submenu && 
    $items[ $count + 1 ]->menu_item_parent != $item->ID) {

    //something

}

答案 1 :(得分:3)

您可以先检查$items[$count + 1]是否存在。喜欢

if( 
   //check first if $items[$count + 1] exists, else it breaks here
   isset($items[ $count + 1 ] )

   //now you know $item[$count + 1] exists, so you can continue
   &&
     ( 
        $items[$count + 1]->menu_item_parent != $parent_id && 
        $submenu && 
        $items[ $count + 1 ]->menu_item_parent != $item->ID
     ) 
   ){

    //something

  }

答案 2 :(得分:1)

您应该使用isset方法进行前缀测试。

电话会是这样的:

if (isset($items[ $count + 1 ])) { //do stuffs}

答案 3 :(得分:1)

好的,in_array文档说:

  

in_array(混合$ needle,数组$ haystack)

其中

=搜索值

haystack =数组

您不是在寻找,而是在寻找

当您查看另请参阅下方的底部时,它会显示:

这就是你要找的东西:

  

如果在数组中设置了给定的键,则array_key_exists()返回TRUE。 key可以是数组索引可能的任何值。

完美!正是你想要的!

  

array_key_exists(混合$ key,数组$ array)

,其中

=要检查的值

数组 =数组(duh!)

if ( array_key_exists($count + 1, $items))
    $items[ $count + 1 ]->menu_item_parent != $parent_id && 
    $submenu && 
    $items[ $count + 1 ]->menu_item_parent != $item->ID) {

    //something

}