2016-09-14 9 views
1

である私はこのような変数の配列($役に立つ)があります。は、アレイ

$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]は常に$ [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 
    ) 
); 

だから、どのように$ iの++] SQLで$の無駄[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] => 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 
    ) 
); 

おかげで..

+1

この場合、配列をマージするには 'array_replace_recursive'を使用してください。 [this](https://eval.in/641811)のようなもの – Thamilan

+0

うん、それは2つの変数を選択して作業している。その後、私はそれをマージするためにarray_replace_recursiveを使用します。 @タミランおかげさま... – Erdi

答えて

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 
     ) 

) 

しかし、 0123を使用しているので、数量が正しい順序で割り当てられるようにしてください。

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);