php - 数量大于1时如何循环?
问题描述
我正在开发一个 API 来从订单中获取商品详细信息
我的数据库中的记录是这样的,
| order_id | item_id | oi_qty
|MTASTO-EVHS5J|7 |2
|MTASTO-EVHS5J|3 |1
我的模型来获取这样的数据
public function get_order_items($order_id) {
$this->db
->select('i.item_name as productTitle, oi.oi_engrave_text as notes, oi.oi_engrave_text as type')
->from('order_items oi')
->join('item i', 'oi.item_id = i.item_id', 'left')
->join('item_size s', 'oi.size_id = s.size_id', 'left')
->where('oi.order_id', $order_id);
$query = $this->db->get();
return $query;
}
在我的控制器中这样做,
//order item
$nested_array = $this->inventory_api->get_order_items($order_id)->result_array();
像这样制作json,
//data response
header('Content-Type: application/json; charset=utf-8');
$default = array(
"items"=> $nested_array
]
);
echo json_encode($default);;
json中的结果是这样的,
"items": [
{
"productTitle": "Alor",
"notes": "costum",
"type": "costum"
},
{
"productTitle": "Rakai Maple",
"notes": "costum",
"type": "costum"
}
]
结果中只有 1 个 Alor 项目,而在 oi_qty 中有 2 个项目
问题是如果 oi_qty 大于 1,我如何循环该项目?
解决方案
在您的基地中,即使数量是两个,您也只能为每个产品输入一个条目。因此,当您在查询中询问条目时,它会逐行返回。
我认为您应该在查询中使用数量:SELECT i.oi_qty as quantity ...
然后像这样解析结果
foreach($nested_array as $item)
{
for($i =0 ; $i < $item['quantity']; $i++)
{
$finalArray[] = [
'name' => $item['name'],,
'note' => $item['note'],
...
];
}
}
推荐阅读
- python - 防止函数连续调用两次
- android - RecycleView 排序
- php - 无法在 laravel 配置文件中编写函数
- java - 使用递归查找斐波那契数列中的数字 - 如何使其更快?
- typescript - TypeScript 中的类型正在发生变化
- r - scales_fill_continuous 不起作用(ggplot2)
- ruby - 超时后结束WEBrick服务器进程的正确方法是什么?
- windows - 通过 Zip 文件安装 Octave
- ssrs-2017 - SSRS 使用配置管理器设置目标报告路径
- regular-language - 正则语言的最小抽吸长度