2015-09-30 2 views
0

Как я могу получить объект, который имеет значение [existence] == 1Как получить значение массива, проверив его значение

Если [existence] == 1 Я хочу, чтобы получить весь объект, который имеет [existence] == 1

и удалить все [existence] == 0

Это мой массив.

Array 
(

    [0] => Array 
     (
      [id] => 3 
      [accountcode_naisen] => 
      [extentype] => 0 
      [extenrealname] => 
      [name] => 0090000270 
      [extenktaiemail] => 
      [secret] => Myojyo42_f 
      [username] => 0090000270 
      [guestIpAddr] => 192.168.236.15 
      [participantSetting] => Array 
       (
        [id] => 13 
        [existence] => 1 
        [leader] => 1 
        [simultaneous] => 
       ) 

     ) 

) 

Это мой код до сих пор

foreach ($participants as $participant=>$c) { 

      if ($c['existence'] != 1) { 
       unset($participants[$participant]); 
      } 

      } 

и я получаю сообщение об ошибке **********

[30-Sep-2015 15:42:38] PHP Notice: Use of undefined constant participantSetting - assumed 'participantSetting' in index.php on line 253

+2

Сообщение об ошибке только говорит, что вы использовали 'participantSetting' как постоянная, но, возможно, следовало бы использовать его как строку' 'participantSetting''. Обратите внимание на цитаты. Остальная часть вашего опубликованного кода выглядит нормально для меня и должна выполнить то, что вы хотите. –

ответ

0

Вы можете использовать что-то более эффективное, чем цикл. Вы можете использовать array_filter() с анонимной функцией в качестве обратного вызова. Что-то вроде этого

$participants = array_filter(
    $participants, 
    function($element) { return $element['participantSetting']['existence'] == 1; } 
); 
0

Следующий код может помочь вам.

foreach ($participants as $key => &$participant) 
{  
    if ($participant['existence'] != 1) 
    { 
      unset($participant[$key]); 
    }  
} 

Когда вы печатаете массив после указанной выше итерации, вы получите ожидаемый результат.

+0

Как-то отношение между '$ key => & $ member' и' unset ($ member [$ key]); 'неверно. Также, если вы используете 'as $ key => $ value', вам не нужна ссылка ... – Havelock

0

я думаю, что это работает

foreach ($participants as $participant=>$c) { 

    if ($c['participantSetting']['existence'] != 1) { 
      unset($participants[$participant]); 
     } 
}