在PHP中输出手动JSON
我自己正在构建一些JSON,如下所示:在PHP中输出手动JSON,php,json,foreach,Php,Json,Foreach,我自己正在构建一些JSON,如下所示: echo '{ "type": "root",'; echo '"children" : ['; echo '{'; echo '"identifier": "Contractor",'; echo '"title": "Contractor",'; echo '"autoIdentifier": true,'; echo '"options": ['; foreach ($names as $n){ echo '{';
echo '{ "type": "root",';
echo '"children" : [';
echo '{';
echo '"identifier": "Contractor",';
echo '"title": "Contractor",';
echo '"autoIdentifier": true,';
echo '"options": [';
foreach ($names as $n){
echo '{';
echo '"text": '.'"'.$n['name'].'",';
echo '"identifier": '.'"'.$n['id'].'"';
echo '},';
}
echo '],';
echo '"title": "TEST",';
echo '"description": ""';
echo '}';
正如您所看到的,我正在循环一些数据以打印到JSON输出中。我遇到的问题是循环中的最后一个回声。这是因为它当前在括号后有一个逗号
但是,如果它是数据循环中的最后一个元素,我希望删除逗号,以便创建正确的JSON
我怎样才能做到这一点?使用某种计数器,然后使用if语句?将循环更改为:
$var = '';
foreach ($names as $n){
$var .= '{';
$var .= '"text": "'.$n['name'].'",';
$var .= '"identifier": "'.$n['id'].'"';
$var .= '} ,';
}
$var = rtrim($var,",");
echo $var;
或
按如下方式更改代码:
$var = '{ "type": "root","children" : [{"identifier": "Contractor","title": "Contractor","autoIdentifier": true,"options": [';
foreach ($names as $n){
$var .= '{"text": "'.$n["name"].'","identifier": "'.$n["id"].'"} ,';
}
$var = rtrim($var,",");
$var = '],"title": "TEST","description": ""}';
echo $var;
我真的更喜欢只使用PHPs JSON编码特性。例如,如果
$n[“name”]
中有引号怎么办?您的JSON将是无效的,但是如果您使用了JSON\u encode
,它会解决这个问题
$child = [
"identifier" => "Contractor",
"autoIdentifier" => true,
"options" => [],
"title" => "TEST",
"description" => ""
];
foreach ($names as $n)
{
$child["options"][] = [
"text" => $n["name"],
"identifier" => $n["id"]
];
}
header( "Content-Type: application/json" );
echo json_encode( ["type" => "root", "children" => [$child]] );
你能告诉我你想手动操作吗?不要重复所有操作。把所有的都放在一个变量里。循环结束后,在变量上使用rtrim删除最后一个逗号,然后回显variable@NiranjanNRaju很多时候我宁愿不问……;)<代码>“.”可以删除否,因为echo在循环之后,所以“.”是连接循环的所有记录
$names = array_map(function($name) {
return '{ "text":"' . $name['name'] . '", "identifier":"' . $name['id'] . '" }';
}, $names);
echo '{ "type": "root",';
echo '"children" : [';
echo '{';
echo '"identifier": "Contractor",';
echo '"title": "Contractor",';
echo '"autoIdentifier": true,';
echo '"options": [';
echo implode(',', $names);
echo '],';
echo '"title": "TEST",';
echo '"description": ""';
echo '}';