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;
我是 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;