I have two objects arrays.
First array $x
:
[0] => stdClass Object
(
[id] => 54
[value] => test54
[something] => testtest54
)
[1] => stdClass Object
(
[id] => 21
[value] => test21
[something] => testtest21
)
...
第二个数组$y
:
[0] => stdClass Object
(
[id] => 21
[value] => test21_new_value
)
[1] => stdClass Object
(
[id] => 54
[value] => test54_new_value
)
...
我想更新我的第一个数组$x
,导入第二个数组($y
)中具有相同id
的字段的value
,我希望得到:
[0] => stdClass Object
(
[id] => 54
[value] => test54_new_value
[something] => testtest54
)
[1] => stdClass Object
(
[id] => 21
[value] => test21_new_value
[something] => testtest21
)
...
我可以做类似以下这样的事情:
foreach($x as $k => $v) {
foreach($y as $k2 => $v2) {
if ($v->id === $v2->id) $x[$k]->value = $v2->value;
}
}
但我不喜欢这样做,因为我必须对每个$x
遍历数组$y
(如果$x
有100项,$y
也有100项,则循环100*100次)。我认为有更有效、优雅或优化的方法来解决这个问题,但我不知道如何做到这一点(我没有找到针对这个特定问题的精确答案,所以在这里提问)。
&
是不必要的,我认为。$v已经是一个对象的引用了(我只尝试过一次循环,但也许我是错误的或者我还没有理解)。 - rap-2-h