Простой тип будет гарантировать, что компилятор знает, что вы имеете в виду в этом случае.
Foo((object)new object[]{ (object)"1", (object)"2" }));
Поскольку массив является подтипом объекта, все это работает. Бит нечетное решение, я соглашусь.
Попробуйте,
ваши $ data перекрываются, поэтому я просто преобразовал их в массив, чтобы все данные сохранялись в нем.
$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);
}
}
}
Вы можете сделать это следующим образом:
$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":"ammount","disc":"20","finalprice":480},{"room_code":"1213","price_code":"P2","price":"500","discount_type":"percent","disc":"50","finalprice":250}]