2016-09-01 6 views
-1

私はPHPでかなり新しく、JSONファイルから特定の行を追加する際に助けが必要です。例えば 私は出力がJSONから合計を追加

Array(
[name] => "Computer" 
[sum] => 2500 
) 

Array(
[name] => "Mouse" 
[sum] => 30 
) 

でなければなりません

Array 
(
[0] => Array 
    (
     [id] => 1 
     [name] => "Computer" 
     [price] => 1000 

    ) 

[1] => Array 
    (
     [id] => 1 
     [name] => "Mouse" 
     [price] => 14 

    ) 

[2] => Array 
    (
     [id] => 1 
     [name] => "Computer" 
     [price] => 1500 


    ) 
[3] => Array 
    (
     [id] => 1 
     [name] => "Mouse" 
     [price] => 16 

    ) 
) 

を持っている私は、この

$i = 0; 
foreach ($array as $rows){ 
$i += $rows['price']; 
} 

を使用してみましたが、この1は、基本的にはそれらをすべて追加します。

私は助けてくれてありがとう!

+1

これはJSONではありません。他の配列を含むPHP配列があります。 – Chris

+0

おっとええ。私はJSONとして出力することを意味する:) –

答えて

0

コード

<?php 
// make origin 
$array_origin = array(
    array('id' => 1,'name' => 'Computer','price' => 1000), 
    array('id' => 1,'name' => 'Mouse','price' => 14), 
    array('id' => 1,'name' => 'Computer','price' => 1500), 
    array('id' => 1,'name' => 'Mouse','price' => 16), 
); 
echo '<pre>' . var_export($array_origin, true) . '</pre><hr>'; 

// store name-price pair 
$stack=array(); 
foreach ($array_origin as $index => $array_part) { 
    $stack[$array_part['name']]=array_key_exists($array_part['name'],$stack)?$stack[$array_part['name']]+$array_part['price']:$array_part['price']; 
} 

// make output 
$j=0; 
$output=array(); 
foreach ($stack as $name => $sum) { 
    $output[]=array(
     'name' => $name, 
     'sum' => $sum 
    ); 
    echo '<pre>' . var_export($output[$j], true) . '</pre>'; 
    $j++; 
} 

出力

enter image description here

または起源配列

$json_str='[ 
    { 
     "id":1, 
     "name":"Computer", 
     "price":"1000" 
    }, 
    { 
     "id":1, 
     "name":"Mouse", 
     "price":14 
    }, 
    { 
     "id":1, 
     "name":"Computer", 
     "price":1500 
    }, 
    { 
     "id":1, 
     "name":"Mouse", 
     "price":16 
    } 
]'; 

$array_origin=json_decode($json_str, true); 
012を作るためにJSONを使用

希望すると助かります〜

+0

ありがとう!これは正解です:) –

0

あなたはすべてのことを書きましたので、私はあなたに簡単なループを書くことができると思います。

$answer = array(); 
foreach($oldarray as $val) 
{ 
    @$answer[$val['name']] += $val['sum']; 
} 
print_r($answer); 

これは正確な回答ではありませんが、そこに表示されます。

0

このコードを試してみてください。

$result = []; 
foreach ($array as $row) { 
    if (array_key_exists($row['name'], $result)) { 
     $result[$row['name']]['sum'] += $row['price']; 
    } else { 
     $result[$row['name']] = [ 
      'name' => $row['name'], 
      'sum' => $row['price'], 
     ]; 
    } 
} 
print_r($result); 
関連する問題