如何在 php 中合并对象数组和普通数组?
How to merge object array with normal array in php?
我有如下两个数组:
数组 1:
array([0]=> 11, [1] => 2.5)
数组 2:
Array (
[0] => stdClass Object (
[type] => 1
[creator_id] => 3
[creator_name] => E1
[per_tar] => 300
[pro_tar] => 200
[ac] => 300
[PA] => 17
[Q1] => 800
)
[1] => stdClass Object (
[type] => 1
[creator_id] => 4
[creator_name] => E2
[per_tar] => 100
[pro_tar] => 170
[ac] => 0
[PA] => 7
[Q1] => 270
)
)
我想要的是通过以下方式将数组 1 与数组 2 合并
数组 1 键 [0] 被合并到数组 2 键 [0] 对象中,所有键都相同。
所以我的预期输出是:
Array (
[0] => stdClass Object (
[type] => 1
[creator_id] => 3
[creator_name] => E1
[per_tar] => 300
[pro_tar] => 200
[ac] => 300
[PA] => 17
[Q1] => 800
[new] => 11
)
[1] => stdClass Object (
[type] => 1
[creator_id] => 4
[creator_name] => E2
[per_tar] => 100
[pro_tar] => 170
[ac] => 0
[PA] => 7
[Q1] => 270
[new] => 2.5
)
)
我正在尝试 array_merge()
函数,但它只合并了两个数组。请帮助我
最好的办法是将 stdClass 对象转换为数组,然后使用 array_merge.
将 stdClass 对象转换为数组,如下所示:
$array = json_decode(json_encode($object), true);
$res = [];
foreach($array1 as $key => $val){
// before merging convert object to array
$arr = is_object($array2[$key]) ? (array)$array2[$key] : $array2[$key];
$res[$key] = array_merge($array1[$key], $arr);
}
print_r($res);
您应该迭代 $array1
个项目并将每个项目的值插入到 $array2
的相关索引中。
foreach ($array1 as $key=>$value){
$array2[$key]->new = $value;
}
结果见demo
此外,如果您想保留 array2
,请将其值复制到新变量中,例如 $newArray
。
$newArray = $array2;
foreach ($array1 as $key=>$value){
$newArray[$key]->new = $value;
}
我有如下两个数组:
数组 1:
array([0]=> 11, [1] => 2.5)
数组 2:
Array (
[0] => stdClass Object (
[type] => 1
[creator_id] => 3
[creator_name] => E1
[per_tar] => 300
[pro_tar] => 200
[ac] => 300
[PA] => 17
[Q1] => 800
)
[1] => stdClass Object (
[type] => 1
[creator_id] => 4
[creator_name] => E2
[per_tar] => 100
[pro_tar] => 170
[ac] => 0
[PA] => 7
[Q1] => 270
)
)
我想要的是通过以下方式将数组 1 与数组 2 合并
数组 1 键 [0] 被合并到数组 2 键 [0] 对象中,所有键都相同。
所以我的预期输出是:
Array (
[0] => stdClass Object (
[type] => 1
[creator_id] => 3
[creator_name] => E1
[per_tar] => 300
[pro_tar] => 200
[ac] => 300
[PA] => 17
[Q1] => 800
[new] => 11
)
[1] => stdClass Object (
[type] => 1
[creator_id] => 4
[creator_name] => E2
[per_tar] => 100
[pro_tar] => 170
[ac] => 0
[PA] => 7
[Q1] => 270
[new] => 2.5
)
)
我正在尝试 array_merge()
函数,但它只合并了两个数组。请帮助我
最好的办法是将 stdClass 对象转换为数组,然后使用 array_merge.
将 stdClass 对象转换为数组,如下所示:
$array = json_decode(json_encode($object), true);
$res = [];
foreach($array1 as $key => $val){
// before merging convert object to array
$arr = is_object($array2[$key]) ? (array)$array2[$key] : $array2[$key];
$res[$key] = array_merge($array1[$key], $arr);
}
print_r($res);
您应该迭代 $array1
个项目并将每个项目的值插入到 $array2
的相关索引中。
foreach ($array1 as $key=>$value){
$array2[$key]->new = $value;
}
结果见demo
此外,如果您想保留 array2
,请将其值复制到新变量中,例如 $newArray
。
$newArray = $array2;
foreach ($array1 as $key=>$value){
$newArray[$key]->new = $value;
}