我有一个post数组,需要从它创建一个新的数组格式,以存储在数据库中的批插入。我用下面的代码实现了这一点。但是想要一个更好的解决方案(如果有的话)来实现我的数组。我想消除内部循环,但没有得到任何解决方案。请提供我如何实现这一点的任何建议。
解析数组的代码:
if ($this->input->post()) {
foreach ($this->input->post() as $key => $value) {
$i = 0;
/* need to eliminate this loop */
foreach ($value as $k => $v) {
$postData[$i][$key] = $v;
$i++;
}
}
}输入数组:
Array
(
[category_id] => Array
(
[0] => 1
[1] => 4
)
[pay_type_id] => Array
(
[0] => 2
[1] => 5
)
[frequency_id] => Array
(
[0] => 3
[1] => 6
)
)输出数组;
Array
(
[0] => Array
(
[category_id] => 1
[pay_type_id] => 2
[frequency_id] => 3
)
[1] => Array
(
[category_id] => 4
[pay_type_id] => 5
[frequency_id] => 6
)
)发布于 2017-09-19 20:48:42
我能看到的不需要第二个数组的唯一方法是这样:
$arr = array("category_id" => array(1, 4), "pay_type_id" => array(2, 5), "frequency_id" => array(3, 6));
foreach ($arr as $key => $value) {
$postData[0][$key] = $value[0];
$postData[1][$key] = $value[1];
}
print_r($postData);但是使用这种方法会失去灵活性,因为您必须事先知道内部数组中将有多少索引。使其足够通用以应对数据更改的唯一方法是使用与最初类似的内部循环。
您的原始代码没有太大问题,这是在这种情况下更改数组格式的一种非常标准和合理的方法。它应该不会给您带来任何特别的性能问题,即使对于相当大的数组,也没有更好的方法来解决它。
https://stackoverflow.com/questions/46300453
复制相似问题