2015-04-30 3 views
0

я следующее, если условие:PHP Undefined смещение уведомление

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

    //something 

} 

я получаю уведомление:

Undefined offset: 13 

Так что я предполагаю, что 13 не существует в $items массиве, и его можно избежать путем проверки с помощью in_array. Однако я не уверен, как я могу использовать эту функцию в вышеуказанном состоянии.

+0

Ваше состояние в цикле? – Prakash

+0

Вы хотите посмотреть, что вы тестируете. Что это говорит? – SaeX

+0

Также вместо $ count + 1 вы можете использовать ++ $ count или $ count ++ в зависимости от того, что будет с вами, а не с этим? –

ответ

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

    //something 

} 
+0

Возможно, какое-то объяснение будет хорошим. – Loko

+0

Идея состоит в том, что сначала нужно проверить, установлен ли индекс массива элементов или нет, прежде чем он будет присоединен к этому элементу индекса. Поэтому, если он установлен только, он проверяет последующие условия, иначе он вернет false и выйдет из условия if. –

1

Вы должны использовать префиксный тест, используя метод isset.

вызов будет выглядеть так:

if (isset($items[ $count + 1 ])) { //do stuffs} 
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 

    } 
1

Хорошо, таким образом, что in_array документы говорят:

in_array (смешанный $ игла, массив $ стог)

Где

иглы = искомое значение

стог = массив со

И вы не ищете для значения, вы ищете для ключ

Когда вы смотрите на дне под смотри также, он говорит:

  • array_key_exists() - проверяет, существует ли данный ключ или индекс в массиве

что то, что вы ищете:

array_key_exists() возвращает TRUE, если данный ключ установлен в массиве. ключ может быть любым значением, возможным для индекса массива.

Отлично! Именно то, что вы хотите!

array_key_exists (смешанный $ ключ, массив $ массив)

где

ключ = значение для проверки

массив = массив (Дух!)

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 

} 
Смежные вопросы