只获取数组的值,并在另一个数组中使其成为新的$ key => $ value

只获取数组的值,并在另一个数组中使其成为新的$ key => $ value

问题描述:

I have an array result from a loop like this

Array ( [0] => Array ( [value] => JKTOF [amount] => 3 ) [1] => Array ( [value] => JKTVZ [amount] => 1 ) [2] => Array ( [value] => JKTOF [amount] => 5 ) [3] => Array ( [value] => JKTDO [amount] => 1 ) [4] => Array ( [value] => JKTOF [amount] => 6 ) [5] => Array ( [value] => JKTWF [amount] => 1 ) [6] => Array ( [value] => JKTML [amount] => 1 ) [7] => Array ( [value] => JKTOG [amount] => 1 ) [8] => Array ( [value] => JKTOF [amount] => 1 ) [9] => Array ( [value] => JKTDO [amount] => 1 ) [10] => Array ( [value] => JKTOC [amount] => 1 ) [11] => Array ( [value] => JKTCC [amount] => 1 ) [12] => Array ( [value] => JKTOC [amount] => 2 ) [13] => Array ( [value] => JKTCH [amount] => 1 ) [14] => Array ( [value] => JKTOC [amount] => 3 ) [15] => Array ( [value] => TKGKO [amount] => 1 ) [16] => Array ( [value] => JKTOC [amount] => 6 ) [17] => Array ( [value] => DPSOC [amount] => 1 ) [18] => Array ( [value] => JKTOC [amount] => 7 ) [19] => Array ( [value] => MELKK [amount] => 1 ) [20] => Array ( [value] => JKTOC [amount] => 12 ) [21] => Array ( [value] => DPSOC [amount] => 1 ) [22] => Array ( [value] => JKTOC [amount] => 9 ) [23] => Array ( [value] => JKTVZ [amount] => 1 ) [24] => Array ( [value] => JKTOC [amount] => 5 ) [25] => Array ( [value] => JKTOG [amount] => 1 ) [26] => Array ( [value] => JKTDB [amount] => 1 ) [27] => Array ( [value] => MESTS [amount] => 1 ) [28] => Array ( [value] => CGKGF [amount] => 1 ) [29] => Array ( [value] => JKTFS [amount] => 1 ) [30] => Array ( [value] => CGKGF [amount] => 1 ) [31] => Array ( [value] => JKTGF [amount] => 1 ) [32] => Array ( [value] => CGKGF [amount] => 1 ) [33] => Array ( [value] => JKTOG [amount] => 1 ) [34] => Array ( [value] => CGKGF [amount] => 1 ) [35] => Array ( [value] => JKTGF [amount] => 2 ) [36] => Array ( [value] => JKTCG [amount] => 1 ) [37] => Array ( [value] => JKTDI [amount] => 1 ) [38] => Array ( [value] => JKTMQ [amount] => 1 ) [39] => Array ( [value] => JKTOG [amount] => 1 ) [40] => Array ( [value] => JKTGF [amount] => 1 ) )

I want my new array to be

Array ( JKTOF => 3 JKTVZ =>1 ....)

I've tried to loop that array with

$simple_unit =[];
        foreach ($unit_result as $row){
            $simple_unit[] = $row[0];
        }

But did'nt work as I expected. I think that I really don't know yet about looping an array.

I really appreciate if you give the answer with brief explanation about looping an array.

You need to build an associative array. You are missing that part in your code. Loop over through the array and use the value as the key and amount as the value and push into another array.

$simple_unit =[];
foreach ($unit_result as $row){
    $key = $row["value"];
    $val = $row["amount"];
    $simple_unit[$key] = $val;
}
print_r($simple_unit); // Array ( [JKTOF] => 3 [JKTVZ] =>1 ....)

EDIT: If you need to sum up values for matching keys:

$simple_unit =[];
foreach ($unit_result as $row){
    $key = $row["value"];
    $val = $row["amount"];
    if(empty($simple_unit[$key])){
       $simple_unit[$key] = 0;
    }
    $simple_unit[$key] += $val;
}
print_r($simple_unit); // Array ( [JKTOF] => 15 [JKTVZ] =>12 ....)