【发布时间】:2014-01-09 13:28:38
【问题描述】:
我有这个脚本来构造一个 JSON:
echo "{";
echo "\"name\": \"flare\","."\n";
echo "\"children\": ["."\n";
foreach($tree as $tag => $customer){
foreach($customer as $customerId => $order){
echo "{\"name\":\"".$customerId."\",";
echo "\"children\": ["."\n";
foreach($order as $orderId => $orderTotal){
echo "{\"name\": \"".$orderId."\", \"size\": \"".$orderTotal."\"},";
}
echo "]";
echo "},";
}
}
echo "]";
echo "}";
$Tree、$customer 和 $order 是多维数组的级别,用于重复循环以找到数组的特定“$order”级别。生成的 JSON 如下 JSON:
{
"name":"flare",
"children":[
{
"name":"4",
"children":[
{
"name":"17",
"size":"104.15"
},
{
"name":"18",
"size":"104.15"
},
{
"name":"23",
"size":"104.15"
},
{
"name":"25",
"size":"104.15"
}, // Remove this comma
]
},
{
"name":"12",
"children":[
{
"name":"36",
"size":"280.00"
},
{
"name":"37",
"size":"384.15"
},
{
"name":"38",
"size":"664.15"
},
{
"name":"43",
"size":"112.00"
},
{
"name":"278",
"size":"235.20"
},
{
"name":"281",
"size":"117.60"
},
{
"name":"298",
"size":"117.60"
}, // Remove this comma
]
},
{
"name":"16",
"children":[
{
"name":"60",
"size":"112.00"
}, // Remove this comma
]
},
{
"name":"17",
"children":[
{
"name":"236",
"size":"235.20"
},
{
"name":"295",
"size":"117.60"
},
]
}, // Revome this comma
]
}
一切正常,但我必须删除最后一个逗号,因为它会生成解析 JSON 的错误。我不能使用 substr() 和 rtrim() 因为它们删除了 JSON 中的所有逗号,而不是最后一个。
问候。
更新 现在我要删除两级逗号。
【问题讨论】:
-
不要通过将字符串混合在一起来构建 JSON!构建一个合适的 PHP 数据结构,然后通过
json_encode推送它。 -
说真的:使用
json_encode()。当语言提供简单的函数调用来为您完成时,不要尝试从头开始创建序列化数据格式。 -
stackoverflow.com/questions/6054033/… 根据选择的答案从 php 5.4 开始:
$json_string = json_encode($data, JSON_PRETTY_PRINT);
标签: php arrays json foreach comma