我有这个结果的数组:
Array
(
[A] => Array
(
[0] => A
[1] => B
[2] => C
)
[B] => Array
(
[0] =>AA
[1] =>BB
[2] =>CC
)
[C] => Array
(
[0] =>AAA
[1] =>BBB
[2] =>CCC
)
)
我希望像行一样打印并将此结果打印到每一行:
A AA AAA
B BB BBB
C CC CCC
如何使用foreach
打印该结果?
foreach ($result as $kk => $arr)
{
foreach($arr as $k=>$v)
{
if ( $k == 'A')
echo $arr[0];
if ( $k == 'B')
echo $arr[1];
if ( $k == 'B')
echo $arr[2]."<br />";
}
}
答案 0 :(得分:1)
创建一个新的tmp变量来存储我们的新订单。
$tmp = array();
阵列有多深?在你的例子中,我们下降了3个级别..
$depth = 3;
您要排序的数组
$result = array(
'a' => array( 'a', 'b', 'c' ),
'b' => array( 'aa', 'bb', 'cc' ),
'c' => array( 'aaa', 'bbb', 'ccc' ),
);
对于$ result中的每个级别,降至$ depth。
for ($i=0; $i<$depth; $i++)
{
// Loop true our results and push them in to the right position in our $tmp array.
foreach ($result as $row)
{
$tmp[$i][] = $row[$i];
}
}
输出var_dump($ tmp):
array(3) {
[0]=>
array(3) {
[0]=>
string(1) "a"
[1]=>
string(2) "aa"
[2]=>
string(3) "aaa"
}
[1]=>
array(3) {
[0]=>
string(1) "b"
[1]=>
string(2) "bb"
[2]=>
string(3) "bbb"
}
[2]=>
array(3) {
[0]=>
string(1) "c"
[1]=>
string(2) "cc"
[2]=>
string(3) "ccc"
}
}
当然..用foreach打印出你重新排序的数组:
foreach($tmp as $row) {
echo "{$row[0]} {$row[1]} {$row[2]}";
}
会给你:
a aa aaa
b bb bbb
c cc ccc
答案 1 :(得分:0)
如果您将输入表示为$ hash,则$ result将以您需要的格式显示数组:
$arr = array_values($hash);
$result = array();
$len = count($arr);
$lenNested = count($arr[0]);
for($i = 0; $i < $len; $i++){
for($j = 0; $j < $lenNested; $j++){
$result[$j][$i] = $arr[$i][$j];
}
}
这只是$ hash的转置。现在,您可以逐行打印 $ result 。