我有一个如下数组(下面的var_dump):
array (size=3)
'Test Field 1' =>
array (size=1)
0 => string 'foo' (length=3)
'Test Field 2' =>
array (size=3)
0 => string 'bar' (length=3)
1 => string 'foobar' (length=6)
2 => string 'barfoobar' (length=9)
'Test Field 3' =>
array (size=2)
0 => string 'barfoo' (length=6)
1 => string 'foobarfoobar' (length=12)
我想输出数据,按键分组如下:
基本上,所有0个键组合在一起,然后是1个键,然后是2个键等。
阵列不会总是以这种方式设置,这意味着每个阵列可能有更多的元素,或者可能只有一个,所以它需要能够动态填充。
典型的foreach循环为我提供了如下数据输出(不是我想要的):
答案 0 :(得分:0)
上面的var_dump来自变量$output
。为了显示上述数据,我做了以下工作:
$max = max( array_map( 'count', $output ) ); // get the max number of keys in the array
$repeat = 0; //set to start with 0 key
for( $repeat; $repeat<=$max; $repeat++ ){
foreach($output as $key => $values){ //loop through the $output
if ( isset( $values[$repeat] ) ){ // check if this exists
echo $key . ': ' . $values[$repeat] . '<br />'; //display the key/values as needed
}
}
}
答案 1 :(得分:0)
这是经过测试的代码
$input = [
'Test Field 1' => [
'foo',
],
'Test Field 2' => [
'bar',
'foobar',
'barfoobar',
],
'Test Field 3' => [
'barfoo',
'foobarfoobar',
],
];
function recursive_print($input)
{
foreach ($input as $k => &$v) {
echo "\n";
echo $k. ':' . array_shift($v);
if (!$v) {
unset($input[$k]);
}
}
if ($input) {
recursive_print($input);
}
}
recursive_print($input);