2016-05-21 6 views
0

私は1つのhelp.Iが必要ですいくつかのキー値としてjsonデータを含む配列を並べ替える必要があります。私の配列を説明しています。PHPを使用してキー値ごとに配列データを並べ替える方法

$data=[ 
{device_type:"1",hit_type:"3",member_id:"96",name:"Gallery",rest_name:"Goro + Gun",summery_id:"22"}, 
{device_type:"1",hit_type:"1",member_id:"96",name:"Page",rest_name:"Goro + Gun",summery_id:"22"}, 
{device_type:"1",hit_type:"2",member_id:"96",name:"Map",rest_name:"Goro + Gun",summery_id:"22"}, 
{device_type:"1",hit_type:"2",member_id:"96",name:"Map",rest_name:"Goro + Gun",summery_id:"22"}, 
{device_type:"1",hit_type:"4",member_id:"90",name:"Phone",rest_name:"the livingroom",summery_id:"21"}, 
] 

私は彼に上記のデータの配列を持っています。私はこれをmember_idとしてソートする必要があり、最終的に別の配列に保存する必要があるhit_typetotal hitを数えます。予想される出力配列を以下に示します。

$result=[ 
{device_type:"1",member_id:"96",Page_hit:"1",Gallery_hit:"1",Map_hit:"2",Phone_hit:"0",Web_hit:"0",rest_name:"Goro + Gun",summery_id:"22",total_hit:"4"}, 
{device_type:"1",member_id:"90",Page_hit:"0",Gallery_hit:"0",Map_hit:"0",Phone_hit:"1",Web_hit:"0",rest_name:"the livingroom",summery_id:"21",total_hit:"1"} 
] 

上記は私の予想されるoutput.hit_typeは、member_idごとに常にカウントされ、表は以下のとおりです。

name  type 
Page  1 
Map  2 
Gallery 3 
Phone  4 
Web  5 

私にこれをする手助けをしてください。

編集:コメントからの問合せ:

$sql = " 
SELECT s.summery_id, 
     s.member_id, 
     s.hit_type, 
     s.device_type, 
     s.counter, 
     s.date, 
     r.rest_name, 
     h‌​.NAME, 
     h.type 
FROM db_analytics_summery AS s 
     LEFT JOIN db_hit_type AS h 
       ON s.hit_type = h.type 
     LEFT JOIN db_restaurant_basic AS r 
       ON s.member_id = r.member_id 
ORDER BY s.summery_id DESC; 
"; 
+0

でそれを行うことができますが、それはデータベースからですか? – splash58

+0

はい、DBから1番目の配列を取得できます。 – satya

+0

私はこれを読んで、それがFAQ http://stackoverflow.com/questions/2699086/sort-multi-dimensional-array-by-valueの複製であると思っていましたが、データベースからデータを読み込んでそれをソートするのは非常に愚かです。ソートにはデータベースを使用します。 – symcbean

答えて

1

クエリ

SELECT s.device_type, 
    s.member_id, 
    sum(if(`hit_type`=1,1,0)) Page_hit, 
    sum(if(`hit_type`=3,1,0)) Gallery_hit, 
    ... 
    r.rest_name, 
    count(1) total_hit 
FROM db_analytics_summery AS s 
    LEFT JOIN db_hit_type AS h 
      ON s.hit_type = h.type 
    LEFT JOIN db_restaurant_basic AS r 
      ON s.member_id = r.member_idgroup by 
group by member_id 
ORDER BY s.summery_id DESC; 
+0

私はこのクエリを '$ sql =" s.summer_id、s.member_id、s.hit_type、s.device_type、s.counter、s.date、r.rest_name、h.name、h.type "を選択します。 \t \t $ sql。= "from db_analytics_summery as s"; \t \t $ sql。= "s.hit_type = h.typeにhと結合してdb_hit_typeを残しました。"; \t \t $ sql。= "s.member_id = r.member_idにrとしてdb_restaurant_basicを残しました"; \t \t $ sql。= "order by s.summery_id desc"; \t \t $ res = mysqli_query($ connect、$ sql); '。 – satya

+0

ここで編集して、上で説明したように期待通りのアウトを得ることができますか? – satya

+0

よろしくお願いします。私の問題を解決できますか? – satya

関連する問題