【发布时间】:2019-08-10 16:27:38
【问题描述】:
我想从两个没有关系的表中获取数据,我使用 foreach 通过选定的键获取所有数据并将两个表中的数据收集到数组中。如何在使用 foreach 获取两个表时将数据保存在数组中?我正在使用 Codeigniter 框架。 这是代码:
$price = $this->pricing->get_by($hc); //get from pricing
foreach ($price as $ps){
$promo = $this->discount->get_by($ps['key1'],$ps['key2']); //get from discount
foreach ($promo as $k) {
if ($k['keyA']!='percent') {
$pricing = $ps['key3'] - $k['keyB'];
$data = array(
'room_code'=>$ps['key1'],
'price_code'=>$ps['key2'],
'price'=>$ps['key3'],
'discount_type'=>$k['keyA'],
'disc'=>$k['keyB'],
'finalprice'=>$pricing
);
}
elseif ($k['keyA']=='percent') {
$pricing = $ps['key3'] - ($ps['key3'] * $k['keyB']/100);
$data = array(
'room_code'=>$ps['key1'],
'price_code'=>$ps['key2'],
'price'=>$ps['key3'],
'discount_type'=>$k['keyA'],
'disc'=>$k['keyB'],
'finalprice'=>$pricing
);
}
print_r($data);
// echo json_encode($data);
}
}
我得到这样的欲望:
Array
(
[room_code] => 1212
[price_code] => P1
[price] => 500
[discount_type] => amount
[disc] => 20
[finalprice] => 480
)
Array
(
[room_code] => 1213
[price_code] => P2
[price] => 500
[discount_type] => percent
[disc] => 50
[finalprice] => 250
)
如果我把json变成这样的结果:
{"room_code":"1212","price_code":"P1","price":"500","discount_type":"amount","disc":"20","finalprice":480}{"room_code":"1213","price_code":"P2","price":"500","discount_type":"percent","disc":"50","finalprice":250}
这不是有效的 json 格式,所以请帮忙..
【问题讨论】:
-
你的预期输出是什么?
-
如果你在循环中打印一个 json_encode ,它将产生一个 json 对象。这意味着您将获得多个 json 对象作为输出,没有外部键值对
-
@M.Hemant 我在转成 json 格式时会这样 [ {"room_code":"1212","price_code":"P1","price":"500","discount_type" :"ammount","disc":"20","finalprice":480}, {"room_code":"1213","price_code":"P2","price":"500","discount_type":"百分比","光盘":"50","finalprice":250} ]
-
尝试在开头添加
$result = [],然后将$data推送到print_r 行的$result,然后将echo json_encode($result)添加到末尾。 -
@AdarshMohan 如果我打印出循环,我只会在键值循环结束时得到 1 个值,如何在外部循环中获取所有值?
标签: php arrays json codeigniter foreach