php foreach多维数组获取信息

时间:2018-10-03 16:06:58

标签: php arrays foreach

我在从数组中获取信息时遇到了一些麻烦。我需要获取每个关键依据的所有信息,但我无法获取。

我有这个数组:

Array(
[en] => Array(
    [a] => Array(
        [0] => [C][C]
        [1] => [L][L][C]
    ) [b] => Array(
        [0] => Tackle
        [1] => RazorLeaf
    ) [c] => Array(
        [0] => 
        [1] =>
    ) [d] => Array(
        [0] => 20
        [1] => 50
    )
) [pt] => Array(
    [a] => Array(
        [0] => [C][C]
    ) [b] => Array(
        [0] => Pontapé
    ) [c] => Array(
        [0] =>
    ) [d] => Array(
        [0] => 20
    )
)
)

在foreach(或多个)中,我需要获取[en][a][0][en][b][0][en][c][0][en][d][0]才能将数据插入数据库。 在下一个循环中,应该获取[en][a][1][en][b][1][en][c][1][en][d][1]。 最后但并非最不重要的一点是,在从[en]更改为[pt]之后,它应该得到[pt][a][0][pt][b][0][pt][c][0][pt][d][0]

我的方法:

                        foreach($result as $language => $index){
                        foreach($index as $attinfo => $index2){
                            //echo "$language <br/> $attinfo <br/>";
                            foreach($index2 as $valorfinal => $index3){
                                echo $index[$attinfo][$valorfinal][$index3]."<br/>";
                            }
                        } 

                    }

我的方法似乎无法按预期工作。有人可以指导我吗? 我想将每个键保存在vars中,然后在每个foreach循环中将它们保存在数据库中。谢谢。

1 个答案:

答案 0 :(得分:3)

我已经重新组织了循环,并更正了最终数据访问中使用的索引(当您使用[$index3]作为索引时,它是一个值)...

foreach($result as $index){
    foreach($index['a'] as $key => $value){
        $data = [];
        foreach ( $index as $key1 => $value1)   {
            $data[] = $index[$key1][$key];
        }
        print_r($data);
    }
}

这输出...

Array
(
    [0] => [C][C]
    [1] => Tackle
    [2] => 
    [3] => 20
)
Array
(
    [0] => [L][L][C]
    [1] => RazorLeaf
    [2] => 
    [3] => 50
)
Array
(
    [0] => [C][C]
    [1] => Pontapé
    [2] => 
    [3] => 20
)

要在输出中包括语言...

$output = [];
foreach($result as $language => $index){
    foreach($index['a'] as $key => $value){
        $data = [];
        foreach ( $index as $key1 => $value1)   {
            $data[] = $index[$key1][$key];
        }
        $data[] = $language;
        $output[] = $data;
    }
}

print_r($output);

提供(部分输出)...

Array
(
    [0] => [C][C]
    [1] => Tackle
    [2] => 
    [3] => 20
    [4] => en
)