我有这样的变量数组($ avail):
$avail =
Array (
[0] => Array
(
[item_id] => 1
[qty_avail] => 44
)
[1] => Array
(
[item_id] => 4
[qty_avail] => 33
)
[2] => Array
(
[item_id] => 6
[qty_avail] => 50
) .....
);
我想选择codeigniter:
$this->db->select(
'item_id,'
.$avail[0]['qty_avail'].' as "qty_avail",
qty_tocome, qty_togo'
);
$this->db->order_by('item_id', 'asc');
$this->db->where('item_category_id = ', $category_id);
$query = $this->db->get('t_inventory i',$limit,$offset)->result_array();
print_r($query);
结果是所有[qty_avail]总是$ avail [0]:
Array (
[0] => Array
(
[item_id] => 1
[qty_avail] => 44
[qty_tocome] => 0.00
[qty_togo] => 0.00
)
[1] => Array
(
[item_id] => 4
[qty_avail] => 44
[qty_tocome] => 0.00
[qty_togo] => 0.00
)
[2] => Array
(
[item_id] => 6
[qty_avail] => 44
[qty_tocome] => 0.00
[qty_togo] => 0.00
)
);
那么,如何选择循环$ avail [0] =在sql中变为$ avail [$ i ++]? 我可以得到如下结果:
Array (
[0] => Array
(
[item_id] => 1
[qty_avail] => 44
[qty_tocome] => 0.00
[qty_togo] => 0.00
)
[1] => Array
(
[item_id] => 4
[qty_avail] => 33
[qty_tocome] => 0.00
[qty_togo] => 0.00
)
[2] => Array
(
[item_id] => 6
[qty_avail] => 50
[qty_tocome] => 0.00
[qty_togo] => 0.00
)
);
谢谢..
答案 0 :(得分:1)
您可以像这样使用array_replace_recursive
:
<?php
$arr = [
["item_id" => 1,
"qty_tocome" => 0.00,
"qty_togo" => 0.00],
["item_id" => 4,
"qty_tocome" => 0.00,
"qty_togo" => 0.00],
["item_id" => 6,
"qty_tocome" => 0.00,
"qty_togo" => 0.00]
];
$avail = [
["qty_avail" => 44],
["qty_avail" => 33],
["qty_avail" => 50]
];
$finalArr = array_replace_recursive($arr,$avail);
print_r($finalArr);
所以你的输出将是:
Array
(
[0] => Array
(
[item_id] => 1
[qty_tocome] => 0
[qty_togo] => 0
[qty_avail] => 44
)
[1] => Array
(
[item_id] => 4
[qty_tocome] => 0
[qty_togo] => 0
[qty_avail] => 33
)
[2] => Array
(
[item_id] => 6
[qty_tocome] => 0
[qty_togo] => 0
[qty_avail] => 50
)
)
但请确保按正确的顺序分配数量,因为您使用的是$this->db->order_by('item_id', 'asc');
。
答案 1 :(得分:0)
try this
$query=$this->db->select('item_id,qty_avail as qty_avail, qty_tocome,qty_togo');
->order_by('item_id', 'asc')
->where('item_category_id ',$category_id)
->limit($limit,$offset);
->get('t_inventory i');
$data = $query->result_array();
foreach($data as $a){
$a['qty_avail'] = $data[0]['qty_avail'];
}
print_r($a);