Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/235.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/8/mysql/67.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 尝试将mysql数据分成两个while循环,以输出json__Php_Mysql_Json_While Loop - Fatal编程技术网

Php 尝试将mysql数据分成两个while循环,以输出json_

Php 尝试将mysql数据分成两个while循环,以输出json_,php,mysql,json,while-loop,Php,Mysql,Json,While Loop,嗨,我正在尝试进行两次while循环,以便能够正确地对存储在数据库中的数据进行分类,然后将其输出 我的代码如下: //verifica qual é o elemento pai $sql1 = 'SELECT DISTINCT itempt_dim FROM dim WHERE id_dim = ( SELECT DISTINCT iddimblg_rdim F

嗨,我正在尝试进行两次while循环,以便能够正确地对存储在数据库中的数据进行分类,然后将其输出

我的代码如下:

//verifica qual é o elemento pai
$sql1 = 'SELECT DISTINCT itempt_dim 
        FROM dim 
        WHERE id_dim = (
                        SELECT DISTINCT iddimblg_rdim 
                        FROM rdim 
                        WHERE iddimblg_rdim NOT IN (
                                                    SELECT iddim_rdim 
                                                    FROM rdim
                                                    )
                    )';

$result1 = mysqli_query($con, $sql1);

while ($row = mysqli_fetch_array($result1)) {

    $elem_pai = $row['itempt_dim'] ;

    $grupo = [
      'name' => $elem_pai,
      'color' => $cor_alea,
      'size' => 1,
      'children' => $marcas[]
    ];

    //query para obter os elementos filhos
    $sql2 = "SELECT itempt_dim 
            FROM dim 
            WHERE id_dim = ANY (
                                SELECT DISTINCT iddim_rdim 
                                FROM rdim 
                                WHERE iddimblg_rdim = (
                                                        SELECT id_dim 
                                                        FROM dim 
                                                        WHERE itempt_dim = ". "'" . $elem_pai . "'" ."
                                                        )
                            )";

    $result2 = mysqli_query($con, $sql2);

    //verifica os elementos filhos
    $marcas = [];

    while ($row = mysqli_fetch_array($result2)) {

      $marcas = [
        'name' => $row['itempt_dim'],
        'color' => $cor_alea,
        'size' => 1
      ];

    }

  }

  print_r(json_encode($grupo));
问题是,我一直得到以下错误:

致命错误:无法使用[]在中读取 C:\wamp64\www\algoritmo\u pdi\sunburst.php,第25行

有人能帮我吗?提前谢谢

我认为这是错误的:

'children' => $marcas[]
在每个循环上都会覆盖

 $marcas = [
    'name' => $row['itempt_dim'],
    'color' => $cor_alea,
    'size' => 1
  ];
所以,更正代码:

while ($row = mysqli_fetch_array($result1)) {

    $elem_pai = $row['itempt_dim'] ;

    $grupo = [
      'name' => $elem_pai,
      'color' => $cor_alea,
      'size' => 1,
      'children' => $marcas
    ];

    //query para obter os elementos filhos
    $sql2 = "SELECT itempt_dim FROM dim WHERE id_dim = ANY (SELECT DISTINCT iddim_rdim FROM rdim WHERE iddimblg_rdim = (SELECT id_dim FROM dim WHERE itempt_dim = ". "'" . $elem_pai . "'" ."))";

    $result2 = mysqli_query($con, $sql2);

    //verifica os elementos filhos
    $marcas = [];

    while ($row = mysqli_fetch_array($result2)) {

      $marcas[] = [
        'name' => $row['itempt_dim'],
        'color' => $cor_alea,
        'size' => 1
      ];

    }
}

第25行是哪一行?虽然与错误无关,但您正在覆盖While循环中的
$marcas
。您需要将结果分配给
$marcas[]
第25行是:“'name'=>$elem_pai,@aynber问题是,我不希望输出是[{output}],我希望它只是{output}。您还需要将
$grupo
移动到第二个while循环的下方,因为
$marcas
在该循环之后才会创建/填充。呜呜!除了
//verifica os elementos filhos$marcas=[]
需要超出$groupo=..的范围,或者`$marcus在您尝试使用它时还不存在