Я нашел следующий код, который печатает все элементы массива в порядке. Как я могу изменить его для печати ключа один раз, а затем все значения, соответствующие ключу, затем еще один ключ, а затем все значения, соответствующие ключу? Я также хотел бы изменить его, чтобы он печатал только первые 9 значений (не более этого) для каждого ключа.
function printAll($a) { if (!is_array($a)) { echo $a, ' '; return; } foreach($a as $v) { printAll($v); } }
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
по-прежнему является значением.