php Foreach 循环遍历多维数组

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/18783604/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-25 18:12:40  来源:igfitidea点击:

Foreach loop through multidimensional array

phparraysmultidimensional-arrayiteration

提问by intelis

I have this set of data that I get from htmlform. It is basically a multidimensional array.

我有这组从html表单中获得的数据。它基本上是一个多维数组。

Data

数据

array(3) {
  ["r1"]=>
  array(2) {
    [0]=>
    string(1) "2"
    [1]=>
    string(1) "4"
  }
  ["r2"]=>
  array(2) {
    [0]=>
    string(1) "5"
    [1]=>
    string(2) "96"
  }
  ["tekma_id"]=>
  array(2) {
    [0]=>
    string(1) "7"
    [1]=>
    string(1) "8"
  }
}

Problem:What i want to do, is to go over this array and for each iteration create a data variable(array).

问题:我想要做的是遍历这个数组并为每次迭代创建一个数据变量(array)。

So for example:

例如:

First iteration:

第一次迭代:

$data = array(
   'r1' => '2'
   'r2' => '5'
   'tekma_id' => '7'
)

Second iteration:

第二次迭代:

$data = array(
   'r1' => '4'
   'r2' => '96'
   'tekma_id' => '8'
)

I've tried with this:

我试过这个:

foreach ($data as $key => $value) {
    foreach ($value as $index => $v) {
        echo "<br>";
        echo "r1: $v";
        echo "<br>";
        echo "r2: $v";
        echo "<br>";
        echo "tekma_id: $v";
    }
}

But it didn't work. Sorry for my bad english and thanks for any help. Cheers!

但它没有用。抱歉我的英语不好,感谢您的帮助。干杯!

回答by George Brighton

How about this?

这个怎么样?

$array = array(
    'r1' => array(2, 4),
    'r2' => array(5, 96),
    'tekma_id' => array(7, 8));

$keys = array_keys($data);
$iterations = count($array[$keys[0]]);

for($i = 0; $i < $iterations; $i++) {
    $data = array();
    foreach($array as $key => $value) {
        $data[$key] = $value[$i];
    }
    print_r($data);
}

Output:

输出:

Array
(
    [r1] => 2
    [r2] => 5
    [tekma_id] => 7
)
Array
(
    [r1] => 4
    [r2] => 96
    [tekma_id] => 8
)

回答by Aleksandr Khristenko

Try this:

尝试这个:

$keys = array_keys($data);
$count = count(array_shift(array_values($data)));

for ($i = 0; $i<$count; $i++) {
    $result = array();
    foreach ($keys as $key) {
        $result[$key] = $data[$key][$i];
    }
    var_dump($result);
}