我想从没有关系的两个表中获取数据,我使用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
)
如果我将结果换成这样的结果:
{"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格式,所以请帮助..
您可以这样做:
$price = $this->pricing->get_by($hc); //get from pricing
$data_arr = array();
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
);
}
$data_arr[] = $data;
}
}
echo json_encode($data_arr);
结果应该是有效的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}]
尝试一下,
您的$数据是重叠的,因此我只是将其转换为一个数组,因此所有数据都将存储在其中。
$price = $this->pricing->get_by($hc); //get from pricing
$mainData = array();
foreach ($price as $ps){
$promo = $this->discount->get_by($ps['key1'],$ps['key2']); //get from discount
if(!empty($promo)){
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') {
$price = $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
);
}
array_push($mainData,$data);
}
}
}