3
我有兩個對象數組。PHP:使用另一個未排序的對象數組更新對象數組值
第一陣列$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;
}
}
但我不喜歡這樣,因爲我走在陣列$y
每個$x
(如果我有$y
在$x
100項和100項,它循環100 * 100次)。我認爲有一種更高效,優雅或最優化的方式來做到這一點,但我不知道該怎麼做(我沒有找到對這個特定問題的精確回答,所以我在這裏問)。
好非常感謝!實際上,我認爲'&'對於對象數組不是必需的。 $ v已經是一個對象的引用(我剛剛嘗試過一個循環,但也許我錯了,或者我不明白) –
@ rap-2-h你說得對。對象總是通過引用傳遞的(忘記了 - 它遲到了!):) – h2ooooooo