繁体   English   中英

json_decode值数学在循环中

[英]json_decode value math's in loop

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

我试图在将值传递到表之前对值执行一些数学计算。 目前,我可以使用echo $mileage1.";";在循环内回显所需的输出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;

有三个选项可将数组中的值替换为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']);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM