2017-01-01 4 views
1

私はlarvalを使ってデータベースクエリを作成しました。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()関数を知っていますが、結果配列では機能しません。この問題の原因は次のとおりです。

$counts = array_count_values($genre_user); 
+0

何が問題ですか?発生しているエラーをお知らせください。 – Aaron

答えて

2

あなたはできません。のみstringintegerのために働くarray_count_values機能:

は、文字列または整数ではありませんすべての要素のための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

関連する問題