我有兩個數組我需要比較....比較兩個陣列將數據保存到比賽
$飲料陣列
(
[0] => Drink Object
(
[top_id] => 40C6-88
[name] => Pepsi
[drink_id] => E936
)
[1] => Drink Object
(
[top_id] => 46DB-9E
[name] => Orange Juice
[drink_id] => E936
)
)
[2] => Drink Object
(
[top_id] => 5J71-4F79
[name] => Dr Pepper
[drink_id] => E936
)
$ DrinkItem陣列
(
[0] => DrinkItem Object
(
[bottom_id] => 45BD-92DD
[name] => Diet Coke
[drink_template_id] => 3B2A-4D82
)
[1] => DrinkItem Object
(
[bottom_id] => 4A71-8F79
[name] => Orange Juice
[drink_template_id] => 3B2A-4D82
)
)
..如果名稱與DrinkItem Array中的其中一個名稱匹配我需要存儲該項目的top_id。
我試圖做這樣的事情:
foreach ($Drink as $d) {
foreach ($DrinkItem as $item){
if ($d->name == $item->name){
$match = $d->top_id;
}
}
}
但我可能是大錯特錯這裏。如果有更好的方法來存儲匹配的ID,或者如果我在正確的軌道上,任何幫助都非常感謝!
由於數組內部有對象,這些循環是我想到的唯一解決方案。您可能希望從數組中刪除匹配以縮短循環。 – Corubba 2012-03-05 01:26:51
您是否需要查找符合條件的所有「top_id」? – Irfy 2012-03-05 01:27:14
你在正確的軌道上,但這不是最有效率的解決方案。它將在[O(n^2)時間](http://en.wikipedia.org/wiki/Big_O_notation)中執行。如果效率很重要,那麼讓我知道,我可能會給你一個更好的解決方案。否則,爲了讓它簡單易懂,有一些東西需要說明。 注:我的替代解決方案可能會處理哈希。降低內存效率,有利於提高時間效率。 – ShaneC 2012-03-05 01:28:54