Jig*_*Raj 7 php arrays codeigniter object
我有一个数组有多个对象(比如3个对象),每个对象有3个"键 - 值"对.
$PredefinedResult
是这样的:
[
{
"EffectiveStatusId":0,
"EffectiveStatus":"abc",
"RecordCount":0
},
{
"EffectiveStatusId":0,
"EffectiveStatus":"def",
"RecordCount":0
},
{
"EffectiveStatusId":0,
"EffectiveStatus":"ghi",
"RecordCount":0
}
]
Run Code Online (Sandbox Code Playgroud)
我有另一个对象数组,其名称为$MainResult
:
[
{
"EffectiveStatusId":1,
"EffectiveStatus":"abc",
"RecordCount":7
},
{
"EffectiveStatusId":6,
"EffectiveStatus":"def",
"RecordCount":91
}
]
Run Code Online (Sandbox Code Playgroud)
预期结果 :
我想用对象替换里面的类似$PredefinedResult
对象,$MainResult
并希望得到如下结果:
[
{
"EffectiveStatusId":1,
"EffectiveStatus":"abc",
"RecordCount":7
},
{
"EffectiveStatusId":6,
"EffectiveStatus":"def",
"RecordCount":91
},
{
"EffectiveStatusId":0,
"EffectiveStatus":"ghi",
"RecordCount":0
}
]
Run Code Online (Sandbox Code Playgroud)
我尝试了什么:
我试过这个代码,但它没有给我想要的结果.
$FinalResult = array_replace($PredefineResult,$MainResult);
Run Code Online (Sandbox Code Playgroud)
任何人都可以帮助我如何获得上面提到的预期结果?
没有为此的“内置”功能。您必须手动循环并比较每个。 array_map
在这里似乎是一个不错的选择:
$PredefinedResult = array_map(function($a) use($MainResult){
foreach($MainResult as $data){
if($a->EffectiveStatus === $data->EffectiveStatus){
return $data;
}
}
return $a;
}, $PredefinedResult);
Run Code Online (Sandbox Code Playgroud)
演示: http: //codepad.viper-7.com/OHBQK8