2016-09-01 2 views
-1

저는 PHP가 새로 도입되어 JSON 파일의 특정 행을 추가하는 데 도움이 필요합니다. 예를 들어 내가 출력이 나는이JSON에서 합계를 더하기

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

를 사용하여 시도 그러나 이것은 기본적으로 그들 모두를 추가

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 

    ) 
) 

있습니다.

감사합니다.

+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); 
관련 문제