2015-07-24 3 views
1

У меня есть объект с именем $ список, отформатированный как следующийУдалить совпадающие элементы из объекта

{"name":"cats","title":"Cats"},{"name":"dogs","title":"Dogs"},{"name":"rabbits","title":"Hares"} 

У меня есть второй объект с именем $ песни2 отформатирован, как в следующем:

{"title":"Cats","name":"cats"},{"title":"Dogs","name":"dogs"},{"title":"Pigs","name":"pigs"},{"title":"Funny","name":"funny"},{"title":"Pictures","name":"pictures"},{"title":"Finance","name":"finance"},{"title":"Cars","name":"cars"}, 

Я бы как пройти через $ list и проверить, находится ли он в $ list2. Если элемент name находится в элементах имен $ list2, я хотел бы удалить его из списка $. Ожидаемый результат в этом случае будет

{"name":"rabbits","title":"Hares"} 

Я попробовал несколько различных методов зацикливания, но я не могу показаться, чтобы получить его, чтобы соответствовать правильно.

+0

Это хорошо. Удачи в том, что вы выходите. У вас возникли вопросы? –

+0

Так что ждите, если название совпадает с тем, что вы не хотите его удалить? Только если имя будет одинаковым с обеих сторон? –

+0

Grumpy, я хочу удалить имя и название, если имя совпадает. – Joe

ответ

2

Что вы ищете, это встроенная функция array_udiff(). Он находит разницу в массивах с функцией, которую вы предоставляете.

$result = array_udiff($list1, $list2, function($a, $b) { 
    return strcasecmp($a['name'], $b['name']); 
}); 

Так что вернуть бы все объекты, которые не в $list2, но находятся в $list1. Я предполагаю, что имя определяет уникальность.