json_decode值的数学在环

问题描述 投票:0回答:1

我有一个循环处理通过JSON一个json_decode字符串。

我想对某个值执行了一些算术计算之前,我把它传给我的表。目前,我可以用echo $mileage1.";";呼应循环中所需的输出,但我需要的关键lc改变1000的划分。

必须有一个办法做到这一点的foreach语句中,而不是在块:像foreach(json_decode($url2, true)['status'] ($status["lc"] / 1000) as $status)例如在($status["lc"] / 1000)做环形块外的数学。

我一直没能找到这个具体情况的任何实例为止。任何建议将不胜感激。

这里是我的代码片段:

$ret_array = array();
$url2 = file_get_contents("http://URLApi?");
foreach(json_decode($url2, true)['status'] as $status){
//mileage maths??
$mileage = $status["lc"];
$mileage1 = ($mileage) / 1000;
//echo $mileage1.";";
$ret_array[] = $status;
}
return $ret_array;
php foreach syntax
1个回答
2
投票

有三个选项,以取代在foreach计算值阵列中的值:

首先,参考&值来改变它原来的阵列中:

$array = json_decode($url2, true);

foreach($array['status'] as &$status){
    $status["lc"] = $status["lc"] / 1000;
}

其次,使用该密钥修改原始数组:

$array = json_decode($url2, true);

foreach($array['status'] as $key => $status){
    $array['status'][$key]["lc"] = $status["lc"] / 1000;
}

三,创建一个新的结果数组:

foreach(json_decode($url2, true)['status'] as $status){
    $status["lc"] = $status["lc"] / 1000;
    $result[] = $status;
}

// Or if you need to preserve keys:

foreach(json_decode($url2, true)['status'] as $key => $status){
    $status["lc"] = $status["lc"] / 1000;
    $result[$key] = $status;
}

您也可以映射每个元素,做计算的函数:

$result = array_map(function($v) { return $v['lc'] = $v['lc'] / 1000; },
                    json_decode($url2, true)['status']);
© www.soinside.com 2019 - 2024. All rights reserved.