为了账号安全,请及时绑定邮箱和手机立即绑定

排列关联数组中的数据

排列关联数组中的数据

PHP
天涯尽头无女友 2022-06-17 16:35:12
我有一个相关的结果数组。我需要根据它们的类别对数组进行分组。例如:与类别相关的作业将在单次迭代下合并。用于制作的代码:    $result = array();    foreach ($group as $element) {        $result[$element['category']][] = $element;    }[Professional Services / Consulting / Project Mgmt] => Array        (            [0] => Array                (                    [category] => Professional Services / Consulting / Project Mgmt                    [jobs] => Array                        (                            [0] => stdClass Object                                (                                    [date] => 12/11/2019                                    [country] => IND                                )                        )                )            [1] => Array                (                    [category] => Professional Services / Consulting / Project Mgmt                    [jobs] => Array                        (                            [0] => stdClass Object                                (                                    [date] => 02/11/2019                                    [country] => US                                )                            [1] => stdClass Object                                (                                    [date] => 03/11/2019                                    [country] => SS                                )                        )                )      )但我需要如下数据:[Professional Services / Consulting / Project Mgmt] => Array        (            [0] => Array                (                    [category] => Professional Services / Consulting / Project Mgmt                    [jobs] => Array                        (                            [0] => stdClass Object                                (                                    [date] => 12/11/2019                                    [country] => IND                                )                        )                )      )请帮我解决一下这个。
查看完整描述

1 回答

?
小怪兽爱吃肉

TA贡献1852条经验 获得超1个赞

这样$result[$element['category']][] = $element;,您只需将具有相同类别的每个元素附加到数组中。相反,您想要的是合并它们。因此,在构建时$result您需要处理两种情况:如果$result-array 不包含您调用的类别$result[$element['category']] = $element;。如果它已经包含您将$element['jobs']-array附加到的类别$result[$element['category']]['jobs']。


看看array_key_exists(这里)和array_merge(这里)。您可以将它们用于您的情况:


$result = array();

foreach ($group as $element) {

    if(array_key_exists($element['category'], $result)) {

        $result[$element['category']]['jobs'] = array_merge($result[$element['category']]['jobs'], $element['jobs']);

    }

    else {

        $result[$element['category']] = $element;

    }

}

注意:这不会导致您在问题中指定的确切结构。在您的问题中,您指定$result应该是一个数组,其中包含每个类别的数字索引(即$result[0]等等)。在我的解决方案中,您有字母数字键,即$result['Professional Services / Consulting / Project Mgmt']. 但我认为后者才是你真正想要的。


查看完整回答
反对 回复 2022-06-17
  • 1 回答
  • 0 关注
  • 94 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信