如何 select 对行使用 SQL 是数组
How to select use SQL with a row is Array
我有这样的变量数组($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
) .....
);
我想要 select 和 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
)
);
那么,如何 select 循环 $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
)
);
谢谢..
您可以这样使用 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');
。
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);
我有这样的变量数组($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
) .....
);
我想要 select 和 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
)
);
那么,如何 select 循环 $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
)
);
谢谢..
您可以这样使用 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');
。
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);