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
,现在所有打印都正常了。