CodeIgniter控制器如何输出指定格式的price嵌套数组JSON数据
解决方案
问题原因
你从模型查询得到的$invoices是每一项包含date_issued、grand_total字段的对象/关联数组集合,未经过结构转换直接序列化,自然会输出键值对格式的对象数组,和你预期的嵌套索引数组结构不符。同时你调用json_encode时传入的第二个参数TRUE是错误用法,该参数接收JSON常量位掩码,TRUE等价于整数1对应JSON_HEX_TAG,不需要特殊转义时无需传入。
解决代码
$invoices = $this->invoice_model->getAllData2(logged('company_id')); $priceData = []; foreach ($invoices as $item) { // 日期字符串转毫秒级时间戳 $timestamp = strtotime($item->date_issued) * 1000; // 金额字符串转浮点型 $amount = (float)$item->grand_total; // 组装成索引数组格式 $priceData[] = [$timestamp, $amount]; } $response['price'] = $priceData; // 如果需要格式化输出方便调试,可以传入JSON_PRETTY_PRINT参数 echo json_encode($response);
注意事项
- 如果你的模型返回的是关联数组而非对象,将代码中
$item->date_issued、$item->grand_total改为$item['date_issued']、$item['grand_total']即可 - 序列化后的输出默认是压缩格式,如果需要和示例一样的格式化缩进,把最后一行改为
echo json_encode($response, JSON_PRETTY_PRINT);
内容的提问来源于stack exchange,提问作者angel1108
相关产品推荐
相关产品推荐

