Php Json_编码或删除最后一个逗号?
我想出了如何得到我想要的结果(几乎)。我的代码在最后一个]之前的末尾添加了一个逗号,因此它不太起作用。我知道我可以使用Json_encode从外部Json构建我的数组,但我被难倒了。我要么需要删除最后一个逗号,要么使用json_encode(我不知道这一点),还有更好的主意吗 代码: 原始JSONPhp Json_编码或删除最后一个逗号?,php,json,Php,Json,我想出了如何得到我想要的结果(几乎)。我的代码在最后一个]之前的末尾添加了一个逗号,因此它不太起作用。我知道我可以使用Json_encode从外部Json构建我的数组,但我被难倒了。我要么需要删除最后一个逗号,要么使用json_encode(我不知道这一点),还有更好的主意吗 代码: 原始JSON [ { "timestamp": 1383609600, "localTimestamp": 1383609600, "issueTimesta
[
{
"timestamp": 1383609600,
"localTimestamp": 1383609600,
"issueTimestamp": 1383609600,
"fadedRating": 4,
"solidRating": 0,
"swell": {
"minBreakingHeight": 4,
"absMinBreakingHeight": 3.836,
"maxBreakingHeight": 6,
"absMaxBreakingHeight": 5.992,
"unit": "ft",
"components": {
"combined": {
"height": 7,
"period": 13,
"direction": 82.64,
"compassDirection": "W"
},
"primary": {
"height": 7,
"period": 13,
"direction": 72.94,
"compassDirection": "WSW"
}
}
}
]
PHP来获得所需的结果
<?php
$url = 'http://magicseaweed.com/api/API_KEY/forecast/?spot_id=1';
$JSON = file_get_contents($url);
$data = json_decode($JSON,true);
echo "[";
foreach ($data as $record) {
echo "[";
echo "{$record['timestamp']}";
echo ",";
echo "{$record['swell']['absMinBreakingHeight']}";
echo "]";
echo ",";
}
echo "]";
?>
最好的方法是什么?您可以将数据存储在临时数组中,然后使用内爆
$data = json_decode($JSON,true);
$out = array();
foreach ($data as $record) {
$out[] = "[{$record['timestamp']},{$record['swell']['absMinBreakingHeight']}]";
}
echo "[" . implode(',', $out) . "]";
最好使用json_编码。像这样:
$data = json_decode($JSON,true);
$out = array();
foreach ($data as $record) {
$out[] = array($record['timestamp'], $record['swell']['absMinBreakingHeight']);
}
echo json_encode($out);
这段代码更简单 冒着回答没有明确问题的风险:
foreach ($data as $record) {
$array[] = array($record['timestamp'], $record['swell']['absMinBreakingHeight']);
}
echo json_encode($array);
简言之。。删除字符串中的最后一个字符(此处为逗号)可以通过以下方法完成:
$string = rtrim($string, ',');
查看更详细的参考资料是什么阻碍了您使用
json_encode()
?当替代方案是手动构造JSON字符串并希望格式正确时,它始终是正确的解决方案。看起来您需要的是2D数组,但您不确定如何构造它。是吗?我想我只是不明白在这种情况下如何设置它。我做得对吗$arr=(“a”=>“timestamp”,“b”=>“swell.absMinBreakingHeight”);echo$json_encode($arr);一个好的起点是使用有效的JSON进行解码。试试像这样的工具。只需转换为数组,对其进行迭代并进行操作,然后使用JSON\u encode
将其转换回JSON即可。是的,这就是想法,使用正确的PHP语法<代码>$arr=array();要初始化,然后在循环中,将子数组附加到它:$arr[]=array($record['timestamp'],$record['swell']['absMinBreakingHeight'])代码>在循环后echo json_encode($arr)代码>是的!工作完美。谢谢,你会的!!
$string = rtrim($string, ',');