Цикл массива массива

в PHP, как я могу зацикливать массив массива, не зная, есть он или нет?

Лучше с примером:

Array ( [0] => Array ( [0] => big [1] => small ) [1] => Array ( [0] => big [1] => tiny ) [2] => Array ( [0] => a [1] => b [2] => c [3] => d [4] => e [5] => f ) [3] => row [4] => cols [5] => blablabla [6] => Array ( [0] => asd [1] => qwe ) } 

Есть идеи? Благодарю.

Solutions Collecting From Web of "Цикл массива массива"

Вы можете использовать is_array чтобы проверить, является ли что-то массивом, и / или вы можете использовать is_object чтобы проверить, можно ли его использовать в foreach :

 foreach ($arr as $val) { if (is_array($val) || is_object($val)) { foreach ($val as $subval) { echo $subval; } } else { echo $val; } } 

Другой альтернативой является использование RecursiveIteratorIterator :

 $it = new RecursiveIteratorIterator( new RecursiveArrayIterator($arr), RecursiveIteratorIterator::SELF_FIRST); foreach($it as $value) { # ... (each value) } 

Рекурсивный итератор работает для нескольких уровней в глубину.

Какой подход выбрать, зависит от того, что вы хотите делать с данными.

array_walk_recursive [docs] позволяет рекурсивно перемещать массив массивов.

Вы можете использовать is_array для проверки того, является ли этот элемент массивом, если он есть, перебирает его рекурсивно.

 foreach( $array as $value ) { if( is_array( $value ) ) { foreach( $value as $innerValue ) { // do something } } } 

Это будет работать, если вы знаете, что это будет максимум 2 уровня вложенного массива. Если вы не знаете, сколько уровней гнездования вам нужно будет использовать рекурсию. Или вы можете использовать такую ​​функцию, как array_walk_recursive

 $big_array = array(...); function loopy($array) { foreach($array as $element) { if(is_array($element)) { // Keep looping -- IS AN ARRAY-- loopy($element); } else { // Do something for this element --NOT AN ARRAY-- } } } loopy();