Сравнить два массива содержащи guid?

Здравствуйте!
Имею два массива:
$arr1 = array( "45ebdbaa-380b-483b-80a2-73d7c53088e2","97baa061-4208-4aeb-8136-eb76c0932a3d");

$arr2 = array( "45ebdbaa-380b-483b-80a2-73d7c53088e2");


Детальный массив:
Array
(
    [0] => 090e3016-a593-11e4-8277-94de8067e7c4
    [1] => 090e3018-a593-11e4-8277-94de8067e7c4
    [2] => 090e301a-a593-11e4-8277-94de8067e7c4
    [3] => 090e301e-a593-11e4-8277-94de8067e7c4
)
второй массив:
Array
(
[22] => c7b8bdb2-a592-11e4-8277-94de8067e7c4
    [23] => c7b8bdb4-a592-11e4-8277-94de8067e7c4
    [24] => c7b8bdb8-a592-11e4-8277-94de8067e7c4
    [25] => c7b8bdba-a592-11e4-8277-94de8067e7c4
    [26] => c7b8bdc2-a592-11e4-8277-94de8067e7c4
    [27] => 090e3016-a593-11e4-8277-94de8067e7c4
    [28] => 090e3018-a593-11e4-8277-94de8067e7c4
)


Требуется выбрать расхождение массивов, но почему то функция array_diff, выкидывает разбивает значение, по отдельности, в общем не корректно работает.
Как сравнить данные массивы?
  • Вопрос задан
  • 165 просмотров
Решения вопроса 1
@entermix
$arr1 = array( "45ebdbaa-380b-483b-80a2-73d7c53088e2","97baa061-4208-4aeb-8136-eb76c0932a3d");
$arr2 = array( "45ebdbaa-380b-483b-80a2-73d7c53088e2");
var_dump(array_diff($arr1, $arr2));


array (size=1)
  1 => string '97baa061-4208-4aeb-8136-eb76c0932a3d' (length=36)


$arr1 = array(
    0 => '090e3016-a593-11e4-8277-94de8067e7c4',
    1 => '090e3018-a593-11e4-8277-94de8067e7c4',
    2 => '090e301a-a593-11e4-8277-94de8067e7c4',
    3 => '090e301e-a593-11e4-8277-94de8067e7c4',
    );

$arr2 = array(
    22 => 'c7b8bdb2-a592-11e4-8277-94de8067e7c4',
    23 => 'c7b8bdb4-a592-11e4-8277-94de8067e7c4',
    24 => 'c7b8bdb8-a592-11e4-8277-94de8067e7c4',
    25 => 'c7b8bdba-a592-11e4-8277-94de8067e7c4',
    26 => 'c7b8bdc2-a592-11e4-8277-94de8067e7c4',
    27 => '090e3016-a593-11e4-8277-94de8067e7c4',
    28 => '090e3018-a593-11e4-8277-94de8067e7c4',
    );
var_dump(array_diff($arr1, $arr2));


array (size=2)
  2 => string '090e301a-a593-11e4-8277-94de8067e7c4' (length=36)
  3 => string '090e301e-a593-11e4-8277-94de8067e7c4' (length=36)

Чем не устраивает?
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
orlov0562
@orlov0562 Куратор тега PHP
I'm cool!
array_diff - именно та функция что необходима:
<?php

$arr1 = array( "45ebdbaa-380b-483b-80a2-73d7c53088e2","97baa061-4208-4aeb-8136-eb76c0932a3d");

$arr2 = array( "45ebdbaa-380b-483b-80a2-73d7c53088e2");

print_r(array_diff($arr1, $arr2));


даёт результат:

Array ( [1] => 97baa061-4208-4aeb-8136-eb76c0932a3d )


возможно проблема где-то в другом месте?
Ответ написан
BuriK666
@BuriK666
Компьютерный псих
$arr1 = array( "45ebdbaa-380b-483b-80a2-73d7c53088e2","97baa061-4208-4aeb-8136-eb76c0932a3d", "111");
$arr2 = array( "45ebdbaa-380b-483b-80a2-73d7c53088e2", "222");
$result = array_merge(array_diff($arr1, $arr2), array_diff($arr2, $arr1));
var_dump($result);
/*
array(3) {
  [0] =>
  string(36) "97baa061-4208-4aeb-8136-eb76c0932a3d"
  [1] =>
  string(3) "111"
  [2] =>
  string(3) "222"
}
*/
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы