[英]is there any better way to append multidimensional array in php?
我設法做到了,它完全可以滿足我的需要,但是,我覺得應該有一些更整潔的東西。
$shifts = Shift::all(); //I am working with laravel
$shiftObj = array();
$i =0; //I create this temp var to fill the sub object block
foreach($shifts as $shift){
$shiftObj[$i]['campaign'] = Campaign::find($shift->campaign_id)->name;
$shiftObj[$i]['place'] = Places::find($shift->place_id)->name;
$shiftObj[$i]['shift_date'] = $shift->shift_date;
$shiftObj[$i]['start_time'] = $shift->start_time;
$shiftObj[$i]['end_time'] = $shift->end_time;
$i++;
}
return json_encode($shiftObj);
通過此代碼,我得到以下響應:
[{"campaign":"camp1","place":"store1","shift_date":"2014-12-09","start_time":"2014-12-09 00:00:00","end_time":"2014-12-09 15:01:00"},{"campaign":"camp2","place":"store2","shift_date":"2014-12-02","start_time":"2014-12-02 01:00:00","end_time":"2014-12-02 02:00:00"},{"campaign":"camp3","place":"store3","shift_date":"2014-12-30","start_time":"2014-12-30 16:00:00","end_time":"2014-12-31 05:00:00"}]
然后我做了以下。 (認為我發現“更好的方法”)。
$shifts = Shift::all();
$shiftObj = array();
foreach($shifts as $shift){
$shiftObj[]['campaign'] = Campaign::find($shift->campaign_id)->name;
$shiftObj[]['place'] = Places::find($shift->place_id)->name;
$shiftObj[]['shift_date'] = $shift->shift_date;
$shiftObj[]['start_time'] = $shift->start_time;
$shiftObj[]['end_time'] = $shift->end_time;
}
return json_encode($shiftObj);
我得到了這個結果:
[{"campaign":"camp1"},{"place":"store1"},{"shift_date":"2014-12-09"},{"start_time":"2014-12-09 00:00:00"},{"end_time":"2014-12-09 15:01:00"},{"campaign":"camp2"},{"place":"store2"},{"shift_date":"2014-12-02"},{"start_time":"2014-12-02 01:00:00"},{"end_time":"2014-12-02 02:00:00"},{"campaign":"camp3"},{"place":"store3"},{"shift_date":"2014-12-30"},{"start_time":"2014-12-30 16:00:00"},{"end_time":"2014-12-31 05:00:00"}]
我希望已經有一個重復的問題。 請幫助我找到更好的方法,也許是我可以學習的教程或文檔,我將不勝感激。 提前致謝!
第二種方法遇到的障礙是每次執行$ shiftObj []時,您將在$ shiftObj末尾推送一個僅包含您的一個屬性的新數組。
因此,您需要像在第一種方法中那樣指定數組鍵,或者像這樣一次定義要推送的整個數組:
$shifts = Shift::all();
$shiftObj = array();
foreach($shifts as $shift){
$shiftObj[] = array(
'campaign' => Campaign::find($shift->campaign_id)->name,
'place' => Places::find($shift->place_id)->name,
'shift_date' => $shift->shift_date,
'start_time' => $shift->start_time,
'end_time' => $shift->end_time
);
}
return json_encode($shiftObj);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.