Create JSON from Bank Select

2

Populate a mysql database with data in this format:  andIwantedtoreturnthisinjsonusingphp,theproblemisthatIhaveforexampleseverallineswiththesamestate,andneedtoreturnthejsonstringformat:

{"Estados": {
    "Espirito Santo": {
      "Cidades": {
        "Cidade 1": {
          "Nome Unidade": {
            "Nome": "a",
            "Endereco": "b",
            "log": "222",
            "lat": "111"
          },
          "Nome Unidade2": {
            "Nome": "a",
            "Endereco": "b",
            "log": "222",
            "lat": "111"
          }
        }
      }
    }
  }
}

That is, group all repeated states, cities as well. I have no idea how to do it, what I have achieved so far was to remove the id and create the array with the (repeated) states like this:

$resultado = $this->sql->select("SELECT * FROM tb_unidades");
//print_r($resultado);
//print_r($resultado['0']['estado']);

$estados = array();
foreach ($resultado as &$row) {
    unset($row['id']);
    $estados[] = array($row['estado']);
}
$estados = array("Estados"=>$estados, "Ben"=>"37", "Joe"=>"43");
print_r(json_encode($estados));

EDIT: Trying the proposed solution I got this:

$resultado=$this->sql->select("SELECT * FROM tb_unidades");

$estados = array();
$cidades = array();

foreach ($resultado as $row) {
    $cidades[$row["cidade"]][] = $row;
    $estados[$row["estado"]][] = $cidades;
}

$estadosp = array("Estados"=>$estados);
return json_encode($estadosp);

The cities were repeated, and some of the other states appeared.

    
asked by anonymous 08.03.2018 / 18:31

1 answer

2

Hello.

Use the state as the array key.

$resultado = $this->sql->select("SELECT * FROM tb_unidades");


$estados = array();
foreach ($resultado as $row) {

    $estados[$row["estado"]][$row["cidade"]][] = $row;
}

Give print_r to this array and see how it looks.

    
08.03.2018 / 18:37