>我有数组 a 具有以下结果:
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 />";
}
}
创建一个新的 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
如果您将输入表示为 $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。