我正在 PHP ,我需要编辑 JSON 输出以仅返回对象>=0
并除以100
EG。
$json = {"data":[0,55,78,-32,-46,37]}
所需
$json = {"data":[0,0.55,0.78,0.37]}
如何做到这一点?
答案 0 :(得分:1)
嗯,我知道这不是最佳做法,但如果它如此简单,您可以执行以下操作。
$json = '{"data":[0,55,78,-32,-46,37]}';
// decoding the string to objects & arrays
$x = json_decode($json);
// applying a function on each value of the array
$x->data = array_map(
function($a)
{
if( $a >= 0 ) return $a/100;
else return null;
},
$x->data
);
// Removing empty values of the array
$x->data = array_filter($x->data);
// making a JSON array
$jsonData = json_encode(array_values($x->data));
// inserting a JSON array in a JSON Object
$json = '{"data":' . $jsonData . '}';
// here is your {"data":[0,0.55,0.78,0.37]}
echo $json;
希望它有所帮助!
Btw,我不得不用array_values欺骗json编码,以防止创建对象而不是数据内容的数组。但我想有一种更好的方法,我只是不知道......编辑:
找出方向:D
从数组中删除空值后,只需执行:
$x->data = array_values($x->data);
$json = json_encode($x);
这将解决问题,它不会与对象的其余部分产生问题。
答案 1 :(得分:0)
的Alessandro:
这是我的方法,随意尝试。 json_decode 以及一个简单的 foreach 可以帮助您......
<强>代码:强>
$json = array();
$result = array();
$json = '{"data":[0,55,78,-32,-46,37]}';
$decoded_json=json_decode($json, TRUE);
foreach ($decoded_json['data'] as &$value) {
if ($value >= 0){
$value = $value / 100;
$result[]=$value;
}
}
echo json_encode($result);
?>
<强>结果:强>
[0,
0.55,
0.78,
0.37
]