Выбрать из двух массивов уникальные значения

funest

Постоялец
Регистрация
2 Июл 2007
Сообщения
146
Реакции
39
Привет.
Есть два массива:
Первый массив
PHP:
Array ( 
[0] => stdClass Object ( [ID] => 1602 [post_author] => 1 ) 
[1] => stdClass Object ( [ID] => 1477 [post_author] => 1 ) 
[2] => stdClass Object ( [ID] => 1476 [post_author] => 1 ) 
etc.)
Второй массив
PHP:
Array ( 
[0] => stdClass Object ( [ID] => 0 [ID_post] => 1476 [ID_user] => 1 ) 
[1] => stdClass Object ( [ID] => 0 [ID_post] => 1477 [ID_user] => 1 ) )
Нужно их сравнить и оставить только уникальные значения ID (во втором массиве ID_post), в данном случае должен остаться только первый элемент первого массива.
array_diff() с объектами не работает
 
Для просмотра ссылки Войди или Зарегистрируйся
абсолютно такая же проблема. Просто берёшь данные как не из массива, а как из объекта ->
 
Для просмотра ссылки Войди или Зарегистрируйся
абсолютно такая же проблема. Просто берёшь данные как не из массива, а как из объекта ->
Мне два массива надо сравнить, структуру которых я выше привел, а не значения объектов в одном.
Причем сравнивать надо ID с ID_post.
 
Мне два массива надо сравнить, структуру которых я выше привел, а не значения объектов в одном.
Причем сравнивать надо ID с ID_post.
а,ну, так надо поточнее писать что надо) правильно было бы "сравнить 2 массива в котором хранятся объекты, по значениям id, author_id, оставить только уникальные и только те, которые есть в обоих объектах."

PHP:
$data1[0]= new ArrayObject;
$data1[1]= new ArrayObject;
$data1[2]= new ArrayObject;

$data1[0]->id = 1;
$data1[1]->id = 22;
$data1[2]->id = 222;

$data2[0]= new ArrayObject;
$data2[1]= new ArrayObject;
$data2[2]= new ArrayObject;
 
$data2[0]->a_id = 1;
$data2[1]->a_id = 33;
$data2[2]->a_id = 333;



function diffInObj($arr1, $arr2, $pole1, $pole2){
 
$ids2 = array(); 
//$new_data = array();   
foreach($arr2 as $arr_id=>$obj){
  $ids2 [$obj->$pole2] = 1;
}    
 
foreach($arr1 as $arr_id=>$obj){
  if(!isset($ids2[$obj->$pole1])){
    unset($arr1[$arr_id]);
  }
   unset($ids2[$obj->$pole1]); // только уникальные по полю $pole1
}    
   return $arr1;
    
}

print_r(diffInObj($data1, $data2, 'id', 'a_id'));
 
Назад
Сверху