Intereting Posts
Импорт и обработка текстового файла в MySQL Неопределенная константа класса 'MYSQL_ATTR_INIT_COMMAND' в константе неопределенного класса (PHP 5.5.3) Сортировка ключей массива по возрастанию Анализ электронной почты и обработка архитекторов Уничтожить сеансы PHP на вкладке «Браузеры» Закрыть preg_replace, чтобы вырезать непечатаемые символы, кажется, также удаляет все иностранные символы PHP – Доступ к элементу массива в пределах одного массива Поиск и печать всех ссылок в DIV Как реализовать заводский класс с использованием PHP – Зависимость впрыска Craigslist Automated Posting API? Mod-rewrite не работает на сервере Network Solutions Route :: post () показывает эту ошибку: MethodNotAllowedHttpException Регулярное выражение PHP для фильтрации URL-адресов из определенных доменов для использования в плагине vBulletin Как я могу получить доступ к объекту-контейнеру в PHP? WordPress – Как добавить привязку к ссылкам предыдущей / следующей страницы

PHP удаляет элементы массива из другого, если существует

У меня есть 2 массива объектов: Array A и Array B. Как я могу проверить, существует ли объект из Array B в Array A., и если существует, удалите его из Array A.

Пример:

Array A: [ {"id": 1, "name": "item1"}, {"id": 2, "name": "item2"}, {"id": 3, "name": "item3"}, {"id": 4, "name": "item4"} ] Array B [ {"id": 1, "name": "item1"}, {"id": 3, "name": "item3"} ] 

После удаления Array A должно выглядеть так:

  [ {"id": 2, "name": "item2"}, {"id": 4, "name": "item4"} ] 

Вы можете использовать array_udiff , и вы можете ссылаться на эти сообщения для сравнения столбца post1 и post2 . живая демонстрация

 print_r(array_udiff($A, $B, function($a, $b){return $a['id'] == $b['id'] && $a['name'] == $b['name'] ? 0 : -1;})); 

Здесь мы используем array_map которые сначала преобразуют object в строку с помощью json_encode который будет преобразовывать массив в json string тогда мы array_diff для обоих массивов.

Попробуйте этот фрагмент кода здесь

 <?php ini_set('display_errors', 1); $array1= [ (object) ["id"=> 1, "name"=> "item1"], (object) ["id"=> 2, "name"=> "item2"], (object) ["id"=> 3, "name"=> "item3"], (object) ["id"=> 4, "name"=> "item4"] ]; $array1=array_map(function($value){return json_encode($value);}, $array1); $array2= [ (object) ["id"=> 1, "name"=> "item1"], (object) ["id"=> 3, "name"=> "item3"] ]; $array2=array_map(function($value){return json_encode($value);}, $array2); $result=array_map(function($value){return json_decode($value);}, array_diff($array1, $array2)); print_r($result); 

array_filter может помочь.

 $a = [ ["id"=> 1, "name"=> "item1"], ["id"=> 2, "name"=> "item2"], ["id"=> 3, "name"=> "item3"], ["id"=> 4, "name"=> "item4"] ]; print_r(array_filter($a, function($e) { return !in_array($e, [["id"=> 1, "name"=> "item1"],["id"=> 3, "name"=> "item3"]]); })); /* => Array ( [1] => Array ( [id] => 2 [name] => item2 ) [3] => Array ( [id] => 4 [name] => item4 ) ) */ 

http://php.net/manual/en/function.array-filter.php

http://php.net/manual/ru/function.in-array.php