За последние 24 часа нас посетили 94466 программистов и 5692 робота. Сейчас ищут 3000 программистов ...

Сравнить массивы

Тема в разделе "PHP для новичков", создана пользователем vovavova007, 30 май 2016.

  1. vovavova007

    vovavova007 Новичок

    С нами с:
    30 май 2016
    Сообщения:
    2
    Симпатии:
    0
    Здравствуйте!
    Например есть три массива:
    PHP:
    1. $array1 = array("Вова", "Ваня", "Саня", "Коля");
    2. $array2= array("Вова",  "Саня", "Коля");
    3. $array3 = array("Вова", "Ваня", "Коля", "Саня");
    Первый массив главный. Второй и третий массив нужно сравнить с первым, на порядок вхождений элементов. Элементов может быть разное количество, но не больше чем в главном массиве. Если порядок сохраняется, значит хорошо, если не сохраняется значит вывести ошибку. В представленном примере сравнивая $array1 с $array2 ошибки не должно быть, так как пропал один элемент но порядок сохранился. А вот сравнивая $array1 с $array3 должна выдаться ошибка так как порядок элементов поменялся. Подскажите логику? В какую сторону копать? Заранее спасибо!
     
  2. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    Например так:
    PHP:
    1. <?php
    2. function check_order($a, $b) {
    3.     foreach($a as $k => $v) {
    4.         if(isset($b[$k]) && $v != $b[$k]) {
    5.             array_splice($b, $k, 0, '');
    6.         }
    7.     }
    8.     return count($a) < count($b);
    9. }
    10.  
    11. $array1 = array("Вова", "Ваня", "Саня", "Коля");
    12. $array2 = array("Вова", "Саня", "Коля");
    13. $array3 = array("Вова", "Ваня", "Коля", "Саня");
    14.  
    15. check_order($array1, $array2); // true
    16. check_order($array1, $array3); // false
     
  3. vovavova007

    vovavova007 Новичок

    С нами с:
    30 май 2016
    Сообщения:
    2
    Симпатии:
    0
    Спасибо!
     
  4. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.333
    Симпатии:
    1.753
    array_intersect() вроде