Intereting Posts
Как отобразить список лет, упорядоченный по столетию Как вставить теги ссылок между тегами заголовка в HTML с помощью SimpleHtmlDom Загрузка файла Laravel – расширение php_fileinfo не включено Как ограничить мое приложение на одной вкладке браузера? Как фильтровать мужской и женский идентификатор в графике Facebook api Программирование сокетов с использованием android и php Использование Gmails Исходящий SMTP из PHP с использованием TLS Устаревшее расширение MySQL в PHP 5.5.x Знак доллара PHP в строках Я получаю сообщение об ошибке в php artisan route: list command в laravel? Перевести командную строку cURL в PHP cURL Laravel – обновлять несколько записей с разными значениями Поиск регулярного выражения Mysql без повторяющихся символов Невозможно соединить эллиптическую кривую Diffie-Hellman с javascript Какая простая альтернатива Php для расширения php gettext, которая может поддерживаться всеми видами бесплатного хостинга

Рекурсия PHP печатает все элементы многомерного массива с ключами

Я нашел следующий код, который печатает все элементы массива в порядке. Как я могу изменить его для печати ключа один раз, а затем все значения, соответствующие ключу, затем еще один ключ, а затем все значения, соответствующие ключу? Я также хотел бы изменить его, чтобы он печатал только первые 9 значений (не более этого) для каждого ключа.

function printAll($a) { if (!is_array($a)) { echo $a, ' '; return; } foreach($a as $v) { printAll($v); } } 

Solutions Collecting From Web of "Рекурсия PHP печатает все элементы многомерного массива с ключами"

 function printAll($a) { if (!is_array($a)) { echo $a, ' '; return; } foreach($a as $k => $value) { if($k<10){ printAll($k); printAll($value); } } } 

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

 function pretty_dump($arr, $d=1){ if ($d==1) echo "<pre>"; // HTML Only if (is_array($arr)){ foreach($arr as $k=>$v){ for ($i=0;$i<$d;$i++){ echo "\t"; } if (is_array($v)){ echo $k.PHP_EOL; Pretty_Dump($v, $d+1); } else { echo $k."\t".$v.PHP_EOL; } } } if ($d==1) echo "</pre>"; // HTML Only } 

Применение:

 $myarray=array( 'mammals'=>array( 'cats'=>array( 'cheetah', 'lion', 'cougar' ), 'dogs'=>array( 'big'=>'Scooby', 'small'=>'chihuahua', 'medium'=>array( 'pumi', 'bulldog', 'boxer' ) ), ), 'fish'=>'fish', 'birds'=>array( 'flying'=>array( 'mallard', 'condor', 'gull' ), 'nonflying'=>'emu' ) ); pretty_dump($myarray); 

Вывод:

  mammals cats 0 cheetah 1 lion 2 cougar dogs big Scooby small chihuahua medium 0 pumi 1 bulldog 2 boxer fish fish birds flying 0 mallard 1 condor 2 gull nonflying emu 
 function printAll($a) { foreach ($a as $k => $v) { echo $k, ' '; } printAllVals($a); } function printAllVals($a) { if (!is_array($a)) { echo $a, ' '; return; } foreach($a as $k => $v) { if ($k < 10) { printAllVals($v); } } } 

Что случилось с print_r , var_dump или var_export ?

В стороне, прочитайте документацию по foreach и вы ясно увидите, как получить ключ, который вы повторяете.

Попробуйте:

 foreach($a as $k => $v) 

где $k – ваш ключ, а $v по-прежнему является значением.