首页 > 解决方案 > 使用foreach循环php在另一个数组中创建数组

问题描述

已经四个小时了,我在谷歌和 SOF 上到处搜索,但找不到答案。这是我到目前为止所尝试的。到目前为止,这是我的代码

        $tmp_array = array();
        foreach ($cms as $key => $val) {

            $cDate = date('Ym', strtotime($val['day_date']));
            $tmp_ids[] = $val['id'];

            if (array_key_exists($cDate, $tmp_array)) {
                $tmp_array[$cDate]['new_visitors'] += $val['new_visitors'];
                $tmp_array[$cDate]['ids'] = $tmp_ids;
            } else {
                $tmp_array[$cDate]['new_visitors'] = $val['new_visitors'];
                $tmp_array[$cDate]['ids'] = $tmp_ids;
            }

        }

它的输出是这样的,

Array
(
    [202001] => Array
        (
            [new_visitors] => 797
            [ids] => Array
                (
                    [0] => 31
                    [1] => 32
                )

        )

    [202002] => Array
        (
            [new_visitors] => 461
            [ids] => Array
                (
                    [0] => 31
                    [1] => 32
                    [2] => 33
                    [3] => 34
                )

        )

)

但我想要这样的结果数组,

Array
(
    [202001] => Array
        (
            [new_visitors] => 797
            [ids] => Array
                (
                    [0] => 31
                    [1] => 32
                )

        )

    [202002] => Array
        (
            [new_visitors] => 461
            [ids] => Array
                (
                    [0] => 33
                    [1] => 34
                )

        )

)

任何建议,我在我的代码中做什么?

id 基本上是表的主键,“new_visitors”是访问我网站的访问者的计数。但到目前为止我还没有找到任何解决方案。

这是我的 $cms 数组。

Array
(
    [0] => Array
        (
            [id] => 31
            [day_date] => 2020-01-30 00:00:00
            [new_visitors] => 459
        )

    [1] => Array
        (
            [id] => 32
            [day_date] => 2020-01-31 00:00:00
            [new_visitors] => 338
        )

    [2] => Array
        (
            [id] => 33
            [day_date] => 2020-02-01 00:00:00
            [new_visitors] => 242
        )

    [3] => Array
        (
            [id] => 34
            [day_date] => 2020-02-02 00:00:00
            [new_visitors] => 219
        )

)

标签: php

解决方案


谢谢你的错误,你的评论有效

  $tmp_array = array();
                foreach ($cms as $key => $val) {
                    $cDate = date('Ym', strtotime($val['day_date']));
                    if (array_key_exists($cDate, $tmp_array)) {
                        $tmp_array[$cDate]['new_visitors'] += $val['new_visitors'];
                        $tmp_array[$cDate]['ids'][] = $val['id'];
                    } else {
                        $tmp_array[$cDate]['new_visitors'] = $val['new_visitors'];
                        $tmp_array[$cDate]['ids'][] = $val['id'];
                    }
                }

推荐阅读