Вот два массива, которые нужно сравнить.эффективный способ сравнения php-массива
array_a(
[0] => array('userid' => aaa, 'created_time' => XXXX,),
[1] => array('userid' => bbb, 'created_time' => XXXX,),
[2] => array('userid' => ccc, 'created_time' => XXXX,)
)
array_b(
[0] => array('userid' => aaa, 'created_time' => XXXX,),
[1] => array('userid' => ccc, 'created_time' => XXXX,),
[2] => array('userid' => ddd, 'created_time' => XXXX,)
)
Я хочу получить все элементы, которые соответствуют следующим условиям: Идентификатор_пользователь array_a находится в array_b и created_time array_a является более новым, чем array_b-х
Я использую следующий код, чтобы сделать это, но это займет если массив массивный.
for array_a{
for array_b{
if (a[user_id] = b[user_id] && a[created_time] > b[created_time]) {
//target got
}
}
}
Есть ли способ эффективно выполнять эту логику?
Спасибо за ответ. Идентификаторы уникальны. Как преобразовать array_a ( [0] => массив ('userid' => aaa, 'created_time' => XXXX,), [1] => array ('userid' => bbb, 'created_time' => ХХХХ,), )
в массив формы (ааа => ХХХХ, БББ => XXXX) ?
Единственное, что вы можете здесь сделать, это изменить свои массивы, чтобы они выглядели как 'array ('aaa' => XXXX, 'bbb' => XXXX)'. Особенно, если вы можете сделать это до того, как данные попадут в этот формат (что крайне непригодно для работы). – Jon
Если все идентификаторы пользователей уникальны, вы можете сначала сопоставить массив B с 'arrayB [user_id] => created_time'. Затем вы можете перебирать массив A и просто искать идентификатор пользователя в массиве B ('O (1)'). Это около 'O (2n)' вместо 'O (n^2)'. –
Являются ли пользователь в отсортированном порядке? – Jack