Задать вопрос

Как вывести разницу двух массивов?

Например есть массив 1
Array ( [0] => stdClass Object ( [list_id] => 53 ) [1] => stdClass Object ( [list_id] => 55 ) [2] => stdClass Object ( [list_id] => 56 ) )

и 2
Array ( [0] => 55 )

Как сделать, так, чтобы отобразились, а лучше создался массив из тех list_id из массива 1, которых нет в массиве 2
В данном случае, чтобы было как то так
Array ( [0] => 53 [1] => 56 )
  • Вопрос задан
  • 398 просмотров
Подписаться 2 Оценить Комментировать
Решения вопроса 1
Rattlesneyk
@Rattlesneyk Автор вопроса
foreach ($array2 as $obj) {
foreach ($array1 as $item) {
if ($item == (int)$obj->list_id) {
$resultArray[] = $obj->list_id;
}
}
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
<?php

$obj1 = new stdClass;
$obj1->list_id = 53;
$obj2 = new stdClass;
$obj2->list_id = 55;
$obj3 = new stdClass;
$obj3->list_id = 56;

$array1 = [$obj1, $obj2, $obj3];
$array2 = ['0' =>55];

$array = array_filter($array1, function($val) use($array2){   
    if (array_search($val->list_id, $array2) === false) {
        return true;
    } else {
        return false;
    }
});

var_dump($array);


Результат
array(2) {
[0] =>
class stdClass#1 (1) {
public $list_id =>
int(53)
}
[2] =>
class stdClass#3 (1) {
public $list_id =>
int(56)
}
}


p.s.Если названия ключей имею значение, просто отсортируйте массив.
Ответ написан
Ваш ответ на вопрос

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

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