Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP中输出手动JSON_Php_Json_Foreach - Fatal编程技术网

在PHP中输出手动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 '{';

我自己正在构建一些JSON,如下所示:

 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 '}';