Php Json_编码或删除最后一个逗号?

Php Json_编码或删除最后一个逗号?,php,json,Php,Json,我想出了如何得到我想要的结果(几乎)。我的代码在最后一个]之前的末尾添加了一个逗号,因此它不太起作用。我知道我可以使用Json_encode从外部Json构建我的数组,但我被难倒了。我要么需要删除最后一个逗号,要么使用json_encode(我不知道这一点),还有更好的主意吗 代码: 原始JSON [ { "timestamp": 1383609600, "localTimestamp": 1383609600, "issueTimesta

我想出了如何得到我想要的结果(几乎)。我的代码在最后一个]之前的末尾添加了一个逗号,因此它不太起作用。我知道我可以使用Json_encode从外部Json构建我的数组,但我被难倒了。我要么需要删除最后一个逗号,要么使用json_encode(我不知道这一点),还有更好的主意吗

代码:

原始JSON

[
    {
        "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, ',');