2017-08-11 21 views
-2

私はアイテムの配列を持っています。すべてのアイテムにstart_dateが含まれています。既存の配列から日付で配列を作成する

開始日に基づいて、start_dateをキーとして開始し、その日のすべてのエントリを内側にして、新しい配列を作成したいとします。このことからそう

{ 
    "2017-08-11" : [ { 
      "Booking_id": "135474", 
      "Start_date": "2017-08-11 09:10:00", 
      "End_date": "2017-08-11 09:59:00", 
      "Max_participants": null, 
      "Description": "Schedule Sports Hall 3", 
      "Trainer": "1053", 
      "Memo": null, 
      "Cms_id": null, 
      "Product_id": "85", 
      "First_name": "Teri", 
      "Middle_name": null, 
      "Last_name": "Hatcher" 
     }, 
     { 
      "Booking_id": "133718", 
      "Start_date": "2017-08-11 10:00:00", 
      "End_date": "2017-08-11 10:59:00", 
      "Max_participants": null, 
      "Description": "Schedule Sports Hall 3", 
      "Trainer": "1053", 
      "Memo": null, 
      "Cms_id": null, 
      "Product_id": "85", 
      "First_name": "Teri", 
      "Middle_name": null, 
      "Last_name": "Hatcher" 
     } 
], 
"2017-08-12" => , 
     [{ 
      "Booking_id": "135514", 
      "Start_date": "2017-08-12 11:00:00", 
      "End_date": "2017-08-12 11:59:00", 
      "Max_participants": null, 
      "Description": "Schedule Sports Hall 3", 
      "Trainer": "1053", 
      "Memo": null, 
      "Cms_id": null, 
      "Product_id": "85", 
      "First_name": "Teri", 
      "Middle_name": null, 
       "Last_name": "Hatcher" 
      }] 
    } 

I:

私はこれを作りたい

[ 
     { 
      "Booking_id": "135474", 
      "Start_date": "2017-08-11 09:10:00", 
      "End_date": "2017-08-11 09:59:00", 
      "Max_participants": null, 
      "Description": "Schedule Sports Hall 3", 
      "Trainer": "1053", 
      "Memo": null, 
      "Cms_id": null, 
      "Product_id": "85", 
      "First_name": "Teri", 
      "Middle_name": null, 
      "Last_name": "Hatcher" 
     }, 
     { 
      "Booking_id": "133718", 
      "Start_date": "2017-08-11 10:00:00", 
      "End_date": "2017-08-11 10:59:00", 
      "Max_participants": null, 
      "Description": "Schedule Sports Hall 3", 
      "Trainer": "1053", 
      "Memo": null, 
      "Cms_id": null, 
      "Product_id": "85", 
      "First_name": "Teri", 
      "Middle_name": null, 
      "Last_name": "Hatcher" 
     }, 
     { 
      "Booking_id": "135514", 
      "Start_date": "2017-08-12 11:00:00", 
      "End_date": "2017-08-12 11:59:00", 
      "Max_participants": null, 
      "Description": "Schedule Sports Hall 3", 
      "Trainer": "1053", 
      "Memo": null, 
      "Cms_id": null, 
      "Product_id": "85", 
      "First_name": "Teri", 
      "Middle_name": null, 
       "Last_name": "Hatcher" 
      } 
] 

(JSONの例では、orginal配列は毎日のための複数のエントリで道長いです) jsonが正確かどうかわからないけど、あなたはポイントを得ると思う。私はこれを自分で試してみましたが、すべてが長すぎるというパフォーマンス上の問題を発見しました。ここで

+2

はあなたのコードを追加します含まれています。 –

+0

@satyampathak私のコード例は悪いですが、while_date <$ current_date whileループを実行してループに1日を追加してから、この情報を取得するクエリを実行します.... これで、私はこれがもっと早くなることを望む総日数です。私はコードを投稿する必要はありません。正解はまだ投稿されていません –

+0

@RoyStijsiger、私はすでにあなたにこれのための最短タラをくれました..下記の答えを確認してください...ありがとう – GYaN

答えて

3

はあなたのソリューションです....

$json = '[ 
    { 
     "Booking_id": "135474", 
     "Start_date": "2017-08-11 09:10:00", 
     "End_date": "2017-08-11 09:59:00", 
     "Max_participants": null, 
     "Description": "Schedule Sports Hall 3", 
     "Trainer": "1053", 
     "Memo": null, 
     "Cms_id": null, 
     "Product_id": "85", 
     "First_name": "Teri", 
     "Middle_name": null, 
     "Last_name": "Hatcher" 
    }, 
    { 
     "Booking_id": "133718", 
     "Start_date": "2017-08-11 10:00:00", 
     "End_date": "2017-08-11 10:59:00", 
     "Max_participants": null, 
     "Description": "Schedule Sports Hall 3", 
     "Trainer": "1053", 
     "Memo": null, 
     "Cms_id": null, 
     "Product_id": "85", 
     "First_name": "Teri", 
     "Middle_name": null, 
     "Last_name": "Hatcher" 
    }, 
    { 
     "Booking_id": "135514", 
     "Start_date": "2017-08-12 11:00:00", 
     "End_date": "2017-08-12 11:59:00", 
     "Max_participants": null, 
     "Description": "Schedule Sports Hall 3", 
     "Trainer": "1053", 
     "Memo": null, 
     "Cms_id": null, 
     "Product_id": "85", 
     "First_name": "Teri", 
     "Middle_name": null, 
      "Last_name": "Hatcher" 
     } 
]'; 

$array = json_decode($json,true); 
$new = array(); 
foreach($array as $row){ 
    $new[date('Y-m-d',strtotime($row['Start_date']))][] = $row; 
} 
echo '<pre>'; print_r($new); 

$新しいは、私たちが助けることができるようにしたい配列...

関連する問題