Как сравнить два массива?

#1 10 марта 2015 в 04:39
Есть два массива:
  1.  
  2. array_1('0' => 1, '1' => 1, '3' => 7 );
  3. array_2('0' => 3, '1' => 2, '2' => 12);
  4.  
Как можно узнать что все значения в массиве 2, больше соответствующих значений в массиве 1? То есть что array_2['0'] > array_1['0'], array_2['1'] > array_1['1'] и т.д.?

p.s. точнее возможно ли это сделать без перебора?
#2 10 марта 2015 в 06:05
Rossoman, присмотритесь к функции array_map() www.php.su/functions/?array-map
Ссылку надо копировать.
#3 10 марта 2015 в 10:19
А чем вас перебор пугает? Все просто, если count($array_1) == count($array_2):
  1. foreach($array_1 as $n=>$item){
  2. if($item < $array_2[$n] ){ /* Здесь код, когда $array_1[$n] < $array_2[$n] */}
  3. if($item == $array_2[$n] ){ /* Здесь код, когда $array_1[$n] = $array_2[$n] */}
  4. if($item > $array_2[$n] ){ /* Здесь код, когда $array_1[$n] > $array_2[$n] */}
  5. }
Если count($array_1) != count($array_2), то чуть сложнее, но тоже без мозгокрутства
#4 10 марта 2015 в 12:28

А чем вас перебор пугает?

Странник
Да собственно ничем. Возможно перебор и будет идеальным вариантом. Просто вот думаю, если в придеться сравнивать 20 000 записей из таблицы. В каждой записи массив из пяти значений, который необходимо сравнить с другим массивом из пяти значений. Как это отразиться на скорости выполнения скрипта?
Loadырь, походу то что нужно, спасибо
#5 10 марта 2015 в 12:32
Собственно вопрос, что будет быстрее в данном случае array_map или foreach?)
#7 10 марта 2015 в 14:14
Странник, спасибо, но вопрос больше риторический) Уже замерил, получается что foreach быстрее работает
#8 10 марта 2015 в 16:45
Foreach всегда быстрее работает чем array_map(), поскольку последняя вызывает функцию столько раз, сколько у вас в массиве элементов. При этом каждый раз создаются копии переменных функции (что активно пожирает память). Разработчики php об этом постоянно пишут в тех стандартных функциях, где используется сторонняя (пользовательская) функция. Я знал об этом, но хотел, чтобы вы сами замерили и убедились — изящный код не всегда самый быстрый.
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.