2017-01-01 6 views
1

Я сделал запрос базы данных с личиночным.Как использовать функцию array_count_values ​​

QUERY:

if(Request::ajax()) { 
     //On récupère l'ensemble des genres des séries visionnées par l'utilisateur 
     $genre_user = DB::table('genres')->select('genres.name') 
             ->join('seriesgenres', 'genres.id', '=', 'seriesgenres.genre_id') 
             ->join('series', 'seriesgenres.series_id', '=', 'series.id') 
             ->join('usersseries', 'series.id', '=', 'usersseries.serie_id') 
             ->where('usersseries.user_id', '=', Auth::user()->id)->get(); 
     print_r($genre_user);die; 
    } 

После этого запроса у меня этот массив

Illuminate\Support\Collection Object 
(
[items:protected] => Array 
    (
     [0] => stdClass Object 
      (
       [name] => Drama 
      ) 

     [1] => stdClass Object 
      (
       [name] => Action 
      ) 

     [2] => stdClass Object 
      (
       [name] => Crime 
      ) 

     [3] => stdClass Object 
      (
       [name] => Drama 
      ) 

     [4] => stdClass Object 
      (
       [name] => Action & Adventure 
      ) 

     [5] => stdClass Object 
      (
       [name] => Drama 
      ) 
    ) 

) 

Я хотел бы подсчитать количество каждого значений в этом массиве. Для этого я знаю, что array_count_values ​​() fonction, но он не работает в моем массиве результатов. Проблема исходит из этой строки:

$counts = array_count_values($genre_user); 
+0

В чем проблема? Пожалуйста, сообщите об ошибке, которую вы испытываете. – Aaron

ответ

2

Вы не можете этого сделать. Функция array_count_values работает только для string или integer:

Броски E_WARNING для каждого элемента, который не является строкой или целым числом.

Для сложных объектов, подобных этому, вам необходимо использовать другой метод. Поскольку ваш PHP не выводит предупреждающие сообщения, он не отображается. Если вы хотите, вы можете сделать что-то вроде преобразования.

$finalItems = array(); 
// Loop through the items of the object and push the names into the array. 
// ... Logic ... 
// And finally do: 
array_count_values($finalItems); 
+1

Спасибо за ваше объяснение, я попробую это – Mattasse

+0

Спасибо за вашу помощь, я решил проблему, у меня хороший день! – Mattasse

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