PHP合并对象数组项

PHP合并对象数组项,php,Php,我正在尝试转换这个对象数组 Array ( [0] => stdClass Object ( [group_name] => 1 [filter_names] => Array ( [0] => a ) ) [1] => stdClass Object ( [group_name] => 1

我正在尝试转换这个对象数组

Array
(
    [0] => stdClass Object
    (
        [group_name] => 1
        [filter_names] => Array
            (
                [0] => a
            )
    )

    [1] => stdClass Object
    (
        [group_name] => 1
        [filter_names] => Array
            (
                [0] => b
            )
    )
)
根据组名称将上面的对象合并为一个对象

filter\u name
则是一个数组。前

Array
(
    [0] => stdClass Object
    (
        [group_name] => 1
        [filter_names] => Array
            (
                [0] => a,
                [1] = >b
            )
    )
)
有什么有效的方法可以实现上述目标吗

来自@Djave的建议解决方案

        $filter_results = [];
        foreach ($filter_array as $element) {

            // If there is already a group with the same name,
            // just add the element's filter name

            if( array_key_exists($element->group_name, $filter_results)){
                $result[$element->group_name]["filter_names"][] = $element->filter_names;
            }else{

            // Otherwise, create a new record in the result array,
            // with an array wrapping the single filter_name

                $filter_results[] = [
                  "group_name" => $element->group_name,
                  "filter_names" => [ $element->filter_names ]
                ];
            }
        }
是给我以下的结果

Array
(
    [0] => Array
    (
        [group_name] => 1
        [filter_names] => Array
            (
                [0] => Array
                    (
                        [0] => a
                    )

            )

    )

    [1] => Array
    (
        [group_name] => 1
        [filter_names] => Array
            (
                [0] => Array
                    (
                        [0] => b
                    )

            )

    )
)

你可以这样做:

$result = [];
foreach ($data as $element) {

    // If there is already a group with the same name,
    // just add the element's filter name

    if( array_key_exists($element['group_name'], $result)){
        $result[$element['group_name']]["filter_names"][] = $element["filter_names"];
    }else{

    // Otherwise, create a new record in the result array,
    // with an array wrapping the single filter_name

        $result[] = [
          "group_name" => $element['group_name'],
          "filter_names" => [ $element["filter_names"] ]
        ];
    }
}

非常类似于,如果(array\u key\u存在($group['group\u name',$result]),您可以添加一个
“有什么有效的方法可以实现上述目标吗?”-请不要这样问,至少先介绍一下您自己的尝试。否则,这归结为一个代码编写请求,而这不是本网站的初衷。根据上面的回答,我得到了一些错误,即
未捕获错误:无法在
中使用stdClass类型的对象作为数组,这意味着这个
$element[“组名”]
。它是数组中的一个对象。尽管我将数组更改为object,但结果仍然不是预期的结果。请参阅更新的问题,其中我包含了您示例的结果。您已将问题标记为PHP,但使用JSON数据问了它,很难理解您的意思。如果您使用我们的在问题中编辑了数据数组的
print\u r
,而不是
json\u encode
,现在所有打印都正常了。