我有一个循环处理通过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;
有三个选项,以取代在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']);