Мне нравится сравнивать два массива без использования in_array
, так как оба этих массива чрезвычайно велики (50 000 плюс). Мне нравится генерировать новый массив всех тех, которые отсутствуют в первом массиве.Эффективное решение для сравнения двух больших массивов
Что было бы самым эффективным решением, которое я бы использовал?
Первый массив
многомерный массив генерируется из SQL Query
Array (
[0] => Array (
[id] => 17228219
[name] => ...
)
[1] => Array (
[id] => 17228220
[name] => ...
)
[2] => Array (
[id] => 17228221
[name] => ...
)
[3] => Array (
[id] => 17228222
[name] => ...
)
[4] => Array (
[id] => 17228223
[name] => ...
)
[5] => Array (
[id] => 17228224
[name] => ...
)
)
Второй массив
Сформирован из простого XML
Array (
[0] => SimpleXMLElement Object (
[0] => 17228219
)
[1] => SimpleXMLElement Object (
[0] => 17228221
)
[2] => SimpleXMLElement Object (
[0] => 17228222
)
[3] => SimpleXMLElement Object (
[0] => 17228224
)
)
Новый массив
Создание массива с отсутствующими идентификаторов
Array (
[0] => Array (
[id] => 17228220
[name] => ...
)
[1] => Array (
[id] => 17228223
[name] => ...
)
)
сделал попробовал 'array_diff'? –
первый из db, используйте запрос, чтобы сравнить со вторым, а не читать все это в памяти. – 2013-04-23 21:07:26
Предполагая, что эти поля id уникальны в каждом массиве, я бы предложил создать новый массив с ключом 'id => name'. то простой массив_дифф будет выполнять весь тяжелый подъем. –