2015-09-10 2 views
-1

I'm итерации успешно через большой массив, который сочетает в себе массивы и StdClass используя следующий код:PHP пропустить итерацию в массиве StdClass

foreach ($arr as $A) { 
     $THIS=$A->w->b;   
} 

Вот пример массива я перебор:

Array 
(
    [0] => Array 
     (
      [w] => stdClass Object 
       (
       [b] => THIS 
     ) 
    [1] => Array 
     (
      [w] => stdClass Object 
       (
       [b] => THIS 
     ) 
    [2] => Array 
     (
      [w] => stdClass Object 
       (
       [b] => THIS 
     ) 
    [3] => Array 
     (
      [z] => stdClass Object 
       (
       [whatever] => NOT THIS 
     ) 
) 

Мне нужно получить THIS значения от [x] stdClass Объект каждого массива; [0], [1], [2], и т.п. Но мне не нужно извлекать значения из [z], у которых есть другой ключ.

Поэтому при работе над кодом, который я успешно получить желаемые THIS значения, но я неоднократно об ошибке при переборе в течение массивов, которые не содержат объект StdClass я пожелаю:

PHP Notice: Undefined property: stdClass::

Что бы быть простейшим способом, посредством которого я могу установить итерацию, чтобы пропустить некоторые нежелательные объекты? или установить его, чтобы пропустить, если нужный объект отсутствует?

+0

Что '' this' и не this'? – aldrin27

+0

Потому что это и пример гораздо большего массива, и это просто то, что я хочу. –

+0

Ваш код и ваш пример не совпадают. Почему бы вам не написать код, который на самом деле (попытаться) работать с вашими данными примера, чтобы мы могли видеть, что с ним не так? –

ответ

2

Самый простой подход, чтобы проверить, что существуют параметры объекта ...

foreach ($arr as $A) 
{ 
    if(isset($A['w'])) 
    { 
    $THIS = $A['w']->b;   
    } 
} 

Edit: Вы можете также проверить дополнительные условия

foreach ($arr as $A) 
{ 
    if(is_array($A) and isset($A['w']) and is_object($A['w']) and isset($A['w']->b)) 
    { 
    $THIS = $A['w']->b;   
    } 
} 
+1

Спасибо, отлично поработал –

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