2017-01-01 3 views
2

У меня есть объект StatColle в отношениях ManyToMany с объектом Groupe. Я хочу сравнить массив объектов Groupe с arrayCollection.Сравнение ArrayCollection с массивом объектов

Вот мой код:

//Create array of Groupe objects 
$nameOfSelectedGroupes = $request->request->get('selectedGroupes'); 

     $groupes= []; 
     foreach ($nameOfSelectedGroupes as $nameOfSelectedGroupe) { 
      $groupe = $em->getRepository(Groupe::class)->findBy(['nom' => $nameOfSelectedGroupe]); 
      $groupes[] = $groupe; 
     } 

// Compare array of objects with ArrayCollection of objects 
...request to get StatColle... 
foreach ($resultats as $resultat) 
    { 
     if ($groupes == $resultat->getGroupes()->toArray()) 
     return $resultat; 
    } 
... 

Это всегда возвращается нуль. Я думаю, что $resultat->getGroupes()->toArray() - это неправильный способ получения Групп, связанных с объектом StatColle.

У вас есть идея сравнить эти массивы?

ответ

1

Я думаю, что вы не можете сравнивать такие массивы. Попробуйте array_diff, а затем проверить, если результирующий массив empty (означает, что они одинаковы):

foreach ($resultats as $resultat){ 
    $compare = array_diff($groupes, $resultat->getGroupes()->toArray()); 
    if (empty($compare)){ 
     return $resultat; 
    } 
} 

Я думаю, что должно работать.

+0

Я пробовал, но у меня есть ошибка: объект класса Groupe не может быть преобразован в строку. Когда я выдаю '$ resultat-> getGroupes() -> toArray()', у меня есть массив объектов Groupe. –

+0

Я думаю, что array_diff не может использоваться для массивов объектов. –

+0

Я предполагаю, что одним из способов отладки является использование 'var_dump' или' print_r' для сравнения двух массивов '$ groupes' и одного из массивов' $ resultat'. Возможно, неправильный способ создания 'groupes []'? –

Смежные вопросы