【发布时间】:2015-02-17 09:02:57
【问题描述】:
我设法做到了,它完美地满足了我的需求,但是,我觉得应该有一些更整洁的东西。
$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[]['campaign'] = ...;key 是 0,$shiftObj[]['place'] = ...;key 是 1。就像你在做$i=0; $shiftObj[$i]['campaign'] = ...; $i++; $shiftObj[$i]['place'] = ...;这肯定不是你需要的。 -
正是这就是我使用那个额外变量的原因......谢谢伙计。
标签: php arrays multidimensional-array append