2013-11-08 5 views
0

Есть ли функция, подобная in_array(), чем может, проверить conntent внутри массива массивов?in_array() для массива массива

Я пробовал:

$day_events = Array(); 
array_push($day_events,array('aa','bb','cc')); 
array_push($day_events,array('aa','bc','cd')); 
array_push($day_events,array('ac','bd','ce')); 
echo '<br />'; 
echo in_array('aa',$day_events); // empty 
echo '<br />'; 
foreach ($day_events as &$value) { 
    echo in_array('aa',$value); // 11 
} 

первый in_array(), который является своего рода функции Я ищу (избегая контура) дал пустой.

+1

'in_array()' родная функция PHP просто не поддерживает многомерные массивы. – MackieeE

+0

@MackieeE, хорошо. Хм ... есть ли другая функция для этого или мне нужно жить с циклом for? – Rikard

+0

Возможный дубликат [in \ _array() и многомерного массива] (http://stackoverflow.com/questions/4128323/in-array-and-multidimensional-array) – dognose

ответ

0

Используйте эту функцию, так как in_array изначально не поддерживает многомерные массивы:

function in_array_r($needle, $haystack, $strict = false) { 
    foreach ($haystack as $item) { 
     if (($strict ? $item === $needle : $item == $needle) || (is_array($item) && in_array_r($needle, $item, $strict))) { 
      return true; 
     } 
    } 

    return false; 
} 

В этом случае вы бы использовать его как это:

echo in_array_r('aa', $day_events) ? 'Found' : 'Not found'; 

Он был взят из этого ответ: https://stackoverflow.com/a/4128377/2612112.

0

Кстати, он не избегает первого, он избегает последнего, у которого есть «ac». Итак, вы начинаете с первых двух. Ваш код работает, но я не уверен, что это то, что вы хотите.

+0

Спасибо за ваш ответ. Я хочу проверить через многомерный массив. Проверьте все значения внутри него снова на мое значение. Я могу сделать это с помощью цикла и работает, но искал функцию для этого. – Rikard

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