PHP 多维关联数组

PHP multidimensional associative array

我是 php 的新手,我不确定这是否可以完成,但我希望有人知道该怎么做。我已经收集了所有需要提交的数据,但现在我需要重新格式化才能 json_encode 发送到数据库。

基本上,我有 1 个包含 3 个子数组($hours、$WId、$Pid)的父数组 ($data)。我需要为每个索引位置创建关联数组并将它们连接在一起。

这是我的父数组:

$data = array(
'hours' => array(),
'wId' => array(),
'phaseId' => array(),
);

这是当前 return 当我 print_r 每个数组时的内容:

Array ( [hours] => Array ( [0] => 0.5 [1] => 1 [2] => 2 ) ) 
Array ( [wId] => Array ( [0] => 10, [1] => 9, [2] => 8, ) ) 
Array ( [phaseId] => Array ( [0] => 20, [1] => 20, [2] => 19, ) ) 

我需要获取这些 "vertical" 数组并将它们转换为每个索引的 "horizontal" 数组,使用数组名称作为 $key 并将该索引的值作为 $value。这是我需要的 return...(语法可能有误,但您可以理解。)

Array[1] ("hours" => 0.5, "wId" => 10, "phaseId" => 20)
Array[2] ("hours" => 1, "wId" => 9, "phaseId" => 20)
Array[3] ("hours" => 2, "wId" => 8, "phaseId" => 19)

有没有什么功能可以让我轻松做到这一点?我看到了如何将它们加入和合并在一起,但不确定如何将数组名称(小时等)设置为 $key 并将每个索引的值设置为 $value。我也需要循环它,因为数组的长度会有所不同。 (但它们的长度始终相同,因此索引仍应作为需要收集的内容使用。)

如有任何建议,我们将不胜感激:)

<?php
// set up your output array
$result = array();

// loop through $data, exposing $name for later use
foreach ($data as $name => $array) {

    // loop through each named array and set the desired value
    // using the current $key and $name
    foreach ($array as $key => $value) {
        $result[$key][$name] = $value;
    }
}

// tada!
print_r($result);

注意: 在您问题的期望结果中,您的父数组键从 1 开始。这个答案假定这是一个错字,而您实际上希望它们与输入相匹配。如果您确实希望它从 1 开始,只需更改我的回答中的这一行:

$result[$key+1][$name] = $value;