首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >消除PHP循环

消除PHP循环
EN

Stack Overflow用户
提问于 2017-09-19 20:26:50
回答 4查看 83关注 0票数 0

我有一个post数组,需要从它创建一个新的数组格式,以存储在数据库中的批插入。我用下面的代码实现了这一点。但是想要一个更好的解决方案(如果有的话)来实现我的数组。我想消除内部循环,但没有得到任何解决方案。请提供我如何实现这一点的任何建议。

解析数组的代码:

代码语言:javascript
复制
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++;
        }
    }
}

输入数组:

代码语言:javascript
复制
Array
(
    [category_id] => Array
        (
            [0] => 1
            [1] => 4
        )

    [pay_type_id] => Array
        (
            [0] => 2
            [1] => 5
        )

    [frequency_id] => Array
        (
            [0] => 3
            [1] => 6
        )

)

输出数组;

代码语言:javascript
复制
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
            )

    )
EN

Stack Overflow用户

发布于 2017-09-19 20:48:42

我能看到的不需要第二个数组的唯一方法是这样:

代码语言:javascript
复制
$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);

但是使用这种方法会失去灵活性,因为您必须事先知道内部数组中将有多少索引。使其足够通用以应对数据更改的唯一方法是使用与最初类似的内部循环。

您的原始代码没有太大问题,这是在这种情况下更改数组格式的一种非常标准和合理的方法。它应该不会给您带来任何特别的性能问题,即使对于相当大的数组,也没有更好的方法来解决它。

票数 0
EN
查看全部 4 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46300453

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档