2016-08-31 7 views
0

У меня есть массив как это:Как проверить значение вложенных элементов массива?

Array 
(
    [0] => Array 
     (
      [score] => 80 
      [seen] => 1 
     ) 

    [1] => Array 
     (
      [score] => 4 
      [seen] => 1 
     ) 
    [2] => Array 
     (
      [score] => 4 
      [seen] => 0 
     ) 
    [3] => Array 
     (
      [score] => 4 
      [seen] => 0 
     ) 
    [4] => Array 
     (
      [score] => 4 
      [seen] => 0 
     ) 
) 

Мне нужно, чтобы проверить, есть ли [seen] = 1 или нет?

if (/* ??? */){ 
    echo "Yes, at least one of [seen] keys is 1"; 
} else { 
    echo "No, all [seen] keys are 0"; 
} 

Как я могу создать это условие?

+0

Если вы только нуждаясь искать 'видел = 1' один раз, то нормальный' foreach' петли будет работать, просто добавьте условие if, если 'seen == 1', и если так' break; ' – Bankzilla

+0

Посмотрите на' array_column() 'и' in_arra y() ' – Rizier123

+0

как обычно, функция заклинания массива один лайнер:' array_sum (array_column ('seen', $ array))> 0' – Ghost

ответ

0

Используя простой foreach цикл может помочь вам

foreach ($array as $arr) { 
if ($arr['seen']==1){ 
    echo 'SEEN'; 
    } 
} 
0
$seen = false; 
foreach($my_array as $el){ 
    if($el['seen']){ 
     $seen = true; 
     break; 
    } 
} 

$seen верно, если хотя бы один из [видел] клавиш 1

$seen является ложным, если все клавиши [видно] являются 0

0

Используя функциональный подход, вы можете фильтровать массив, используя функцию, которая проверяет значение 'seen' == 1. Тогда, если результирующий массив не пуст, вы знаете, что есть некоторые элементы, которые имеют значения 'seen' == 1.

<?php 

$ar = array(
    0 => array(
     'score' => 80, 
     'seen' => 1), 
    1 => array(
     'score' => 4, 
     'seen' => 1), 
    2 => array(
     'score' => 4, 
     'seen' => 0) 
     ); 

if (array_filter($ar, function($x) { return $x['seen'] == 1; })){ 
    echo "Yes, at least one of [seen] keys is 1"; 
} else { 
    echo "No, all [seen] keys are 0"; 
} 

?> 

Конечно, этот метод менее эффективен, чем те, которые вырваться из петли, как только будет найден один 'seen' == 1 элемент. Но это дает вам одно выражение в вашем условном выражении.

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