Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/240.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 循环中最后一个/第一个条目的单独处理(具有子循环)_Php_Nested Loops - Fatal编程技术网

Php 循环中最后一个/第一个条目的单独处理(具有子循环)

Php 循环中最后一个/第一个条目的单独处理(具有子循环),php,nested-loops,Php,Nested Loops,我在以下情况下遇到了一些麻烦。我想输出嵌套信息,看起来有点像这样: "name": "X", "children": [ { "name": "categories", "children": [ { "name": "Cat A", "children": [ {"name": "B"}, {"name": "C"}, {"name": "D"} ] },

我在以下情况下遇到了一些麻烦。我想输出嵌套信息,看起来有点像这样:

 "name": "X",
 "children": [
  {
   "name": "categories",
    "children": [
        {
       "name": "Cat A",
       "children": [
        {"name": "B"},
        {"name": "C"},
        {"name": "D"}
       ]
     },
     {
      "name": "Cat B",
      "children": [
  {"name": "C"},
  {"name": "D"}
 ]
}
在本例中,您可以看到子类A的最后一个}结尾处有一个逗号,而最后一个嵌套类B的结尾处没有逗号。在一个例子中,我学习了如何解析内部循环{name:D}中的逗号。但是,在第一个while循环结束时,使用sprintf而不是printf的内爆(参见下面的代码)创建了数据的双重打印

这就是稍微调整后的代码:

while ($ucs = mysqli_fetch_object($uc))
{
    printf('{');
    printf('"name": "%s",', $ucs->cat);
    /*for ($i = 0; $i < 100; $i++)
    {
        $cat_name = $ucs->cat;
    }*/
 printf('"children": [');
     $rtitle = "SELECT title FROM table WHERE genre='$category'";
     //Some other code of lesser relevance for this issue
    $names = array();
    while ($title2 = mysqli_fetch_object($ptitles)) {
    $names[] = sprintf('"name": "%s"', $title2->title);
     }
     echo implode(',', $names);
printf(']');
printf('},');
    //Some other code
现在主要的问题是去掉最后一个print语句中的逗号。 然而,对该类别使用内爆并没有奏效。在上一个主题中,一位用户指出,如果它不是第一个输出,请在代码之前添加它。然而,在这种情况下,这会起作用吗?如果是,我如何标记这是否是第一次迭代

我希望有人能帮我, 再次非常感谢您的帮助,
提前谢谢

在循环开始时,将变量设置为0,在循环结束时,将其递增1。然后,使用if语句查看变量是否等于0


不过,请使用json_编码。它将产生更干净、更易于维护的代码

为什么不使用json_encode呢?只需创建简单的对象并使用。自己编写一个JSON编码器是一个非常糟糕的主意。我通常觉得构建一个输出数组然后使用JSON_encode更容易。谢谢你的提示!我不知道php有这样的选择。我会考虑使用它!谢谢成功了!谢谢,我上次使用php是很久以前的事了,我不知道json_encode函数。我会调查一下的!非常感谢你!