我有一个数组json数据,我想对值求和,并在echo上以不同的方式显示它,我已经阅读了与此相关的另一个线程,但无法根据我的情况弄清楚。
JSON:
{
"perusahaan": {
"nomorLaporan": "blabla",
"posisiDataTerakhir": "201912",
"tanggalPermintaan": "blabla",
"fasilitas": {
"suratBerharga": [],
"kreditPembiayan": [
{
"ljk": "510",
"ljkKet": "BANK NATIONALNOBU",
"jumlahHariTunggakan": "0",
"nilaiProyek": "20000000000",
"plafonAwal": "20000000000",
"plafon": "20000000000"
},
{
"ljk": "503",
"ljkKet": "BANK NATIONALNOBU",
"jumlahHariTunggakan": "0",
"nilaiProyek": "15000000000",
"plafonAwal": "15000000000",
"plafon": "15000000000"
},
{
"ljk": "563",
"ljkKet": "BCA",
"jumlahHariTunggakan": "0",
"nilaiProyek": "15000000000",
"plafonAwal": "15000000000",
"plafon": "15000000000"
},
{
"ljk": "509",
"ljkKet": "BCA",
"jumlahHariTunggakan": "0",
"nilaiProyek": "15000000000",
"plafonAwal": "15000000000",
"plafon": "15000000000"
}
]
}
}
}
PHP:
$summedvalueshere=0;
$string = file_get_contents('ideb/NPWP.txt');
$json_a = json_decode($string, TRUE);
foreach ($mainjson['perusahaan']['fasilitas']['kreditPembiayan'] as $v) {
$summedvalueshere+=$v['plafonAwal'];
echo $v['ljkKet']." = ".$summedvalueshere;
}
但显示:
BANK NATIONALNOBU = 20000000000
BANK NATIONALNOBU = 35000000000
BCA = 50000000000
BCA = 65000000000
我期望:
BANK NATIONALNOBU = 35000000000
BCA = 30000000000
任何想法如何解决?预先感谢..
您可以这样操作:
$string = file_get_contents('ideb/NPWP.txt');
$mainjson = json_decode($string, TRUE);
//create an array to store the total values
$value_array = array();
//go over each item in the json
foreach ($mainjson['perusahaan']['fasilitas']['kreditPembiayan'] as $v) {
//if an item with same name has been found add this value to it
if(array_key_exists($v['ljkKet'], $value_array)){
$value_array[$v['ljkKet']] += $v['plafonAwal'];
}else{
//else creat a new element in the array with current value
$value_array[$v['ljkKet']] = $v['plafonAwal'];
}
}
// display the results
// for each item in value array
foreach($value_array as $key => $value){
// print the name and the value
echo $key.' = '.$value.'<br>';
}
基本上创建另一个存储值的数组,并在找到更多值时添加它们。然后遍历数组并回显结果。我厌倦了发表评论以帮助您更好地理解它。如果您有任何问题,请通知我。
编辑:
回答您的评论。您可以将功能拆分为不同的功能,然后为不同的值调用它们。参见下面的代码:
$string = file_get_contents('ideb/NPWP.txt');
$mainjson = json_decode($string, TRUE);
//setting main json path to branch_array, easyier to read.
$branch_array = $mainjson['perusahaan']['fasilitas']['kreditPembiayan'];
//sum the differnt values
//plafonAwal
$plafonAwal_array = sum_data($branch_array, 'plafonAwal');
//nilaiProyek
$nilaiProyek_array = sum_data($branch_array, 'nilaiProyek');
//jumlahHariTunggakan
$jumlahHariTunggakan_array = sum_data($branch_array, 'jumlahHariTunggakan');
//print the results
print_results($plafonAwal_array, 'plafonAwal');
echo '<br>';
print_results($nilaiProyek_array, 'nilaiProyek');
echo '<br>';
print_results($jumlahHariTunggakan_array, 'jumlahHariTunggakan');
// --- FUNCTIONS --- //
//add the values of specified key
function sum_data($data_array, $key_name){
$value_array =array();
foreach ($data_array as $v) {
if(array_key_exists($v['ljkKet'], $value_array)){
$value_array[$v['ljkKet']] += $v[$key_name];
}else{
$value_array[$v['ljkKet']] = $v[$key_name];
}
}
return $value_array;
}
//function prints results of sums with a custom heading
function print_results($result_array, $heading=''){
// if there is a heading print it out
if($heading!=''){
echo $heading.':<br>';
}
// display the results
// for each item in $result_array
foreach($result_array as $key => $value){
echo $key.' = '.$value.'<br>';
}
}
我将功能分解为2个不同的功能,其中1添加了值,另一个则将其打印出来。
您可以这样操作:
$string = file_get_contents('ideb/NPWP.txt');
$mainjson = json_decode($string, TRUE);
//create an array to store the total values
$value_array = array();
//go over each item in the json
foreach ($mainjson['perusahaan']['fasilitas']['kreditPembiayan'] as $v) {
//if an item with same name has been found add this value to it
if(array_key_exists($v['ljkKet'], $value_array)){
$value_array[$v['ljkKet']] += $v['plafonAwal'];
}else{
//else creat a new element in the array with current value
$value_array[$v['ljkKet']] = $v['plafonAwal'];
}
}
// display the results
// for each item in value array
foreach($value_array as $key => $value){
// print the name and the value
echo $key.' = '.$value.'<br>';
}
基本上创建另一个存储值的数组,并在找到更多值时添加它们。然后遍历数组并回显结果。我厌倦了发表评论以帮助您更好地理解它。如果您有任何问题,请通知我。