У меня есть два массива, мне нужно сравнить ....Сравнение двух массивов сохранить данные спичек
$ Пейте составлять список присяжных заседателей
(
[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
)
)
.. Если name соответствует одному из имен в массиве DrinkItem Мне нужно сохранить top_id этого элемента.
Я пытался сделать что-то вроде:
foreach ($Drink as $d) {
foreach ($DrinkItem as $item){
if ($d->name == $item->name){
$match = $d->top_id;
}
}
}
Но я мог бы быть способ покинуть базу здесь. Если есть лучший подход для хранения идентификатора совпадений или если я на правильном пути, любая помощь очень ценится!
Поскольку в массиве есть объекты, петли - единственное решение, которое приходит мне на ум. Вы можете удалить совпадения из массивов, чтобы сократить циклы. – Corubba
Вам нужно найти все 'top_id', которые соответствуют критерию? – Irfy
Вы на правильном пути, но это не самое * эффективное * решение. Он будет выполняться в [O (n^2) раз] (http://en.wikipedia.org/wiki/Big_O_notation). Если эффективность важна, дайте мне знать, и я смогу дать вам лучшее решение.В противном случае есть что сказать, чтобы это было легко понять. Примечание. Мои альтернативные решения, вероятно, будут иметь дело с хешированием. Перетаскивание эффективности памяти в пользу эффективности времени. – ShaneC