我找到了以下代码,它可以打印出数组中的所有元素。如何修改它以打印一次键,然后是键对应的所有值,然后是另一个键,那么所有与键对应的值?我也想修改它,因此它只打印每个键的前9个值(不超过这个值)。
function printAll($a) {
if (!is_array($a)) {
echo $a, ' ';
return;
}
foreach($a as $v) {
printAll($v);
}
}
答案 0 :(得分:7)
我假设你想要一些非编程人类可以从中获得某种意义。
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
答案 1 :(得分:4)
function printAll($a) {
if (!is_array($a)) {
echo $a, ' ';
return;
}
foreach($a as $k => $value) {
if($k<10){
printAll($k);
printAll($value);
}
}
}
答案 2 :(得分:2)
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);
}
}
}
答案 3 :(得分:1)
print_r
,var_dump
或var_export
出了什么问题?
除此之外,请阅读foreach
上的文档,您将清楚地看到如何获取您正在迭代的密钥。
答案 4 :(得分:0)
尝试:
foreach($a as $k => $v)
其中$k
是您的密钥,$v
仍然是值。