Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] formar json

Estas en el tema de formar json en el foro de PHP en Foros del Web. estoy intentando agrupar items de un json, me explico. Código: [ { "id": "1", "cliente": "pepe", "poblacion": "barcelona" }, { "id": "2", "cliente": "pepe", "poblacion": ...
  #1 (permalink)  
Antiguo 11/06/2022, 07:59
 
Fecha de Ingreso: enero-2008
Ubicación: Valencia
Mensajes: 65
Antigüedad: 16 años, 3 meses
Puntos: 2
formar json

estoy intentando agrupar items de un json, me explico.

Código:
[
    {
        "id": "1",
        "cliente": "pepe",
        "poblacion": "barcelona"
    },
    {
        "id": "2",
        "cliente": "pepe",
        "poblacion": "madrid"
    },
    {
        "id": "3",
        "cliente":  "juan",
        "poblacion":"barcelona"
    },
    {
        "id": "4",
        "cliente":  "juan",
        "poblacion": "Valencia"
    }
]
y lo que me gustaria es agruparlos por poblacion

Código:
  {
  "barcelona": [
    {
      "cliente": "pepe"
    },
    {
      "cliente": "juan"
    }
  ],
  "madrid": [
    {
      "cliente": "pepe"
    }
  ],
  "valencia": [
    {
      "cliente": "juan"
    }
  ]
}
como puedo conseguirlo? he provado con while y foreach y no lo consigo
mi codigo

Código:
$result = mysqli_query($link, "SELECT  * FROM obras");

while($row = $result->fetch_array()){
    $rows[] = $row;
}

foreach($rows as $row){
    echo $row['poblacion'];
}
mysqli_close($link);

Última edición por Ramonromero; 11/06/2022 a las 08:51
  #2 (permalink)  
Antiguo 12/06/2022, 04:18
 
Fecha de Ingreso: enero-2008
Ubicación: Valencia
Mensajes: 65
Antigüedad: 16 años, 3 meses
Puntos: 2
Respuesta: formar json

Aqui la solucion

Código:
$group = array();

foreach ( $result as $value ) {
    $group[$value['poblacion']][] = $value;
}

echo json_encode($group);
Tan solo 3 lineas

Etiquetas: formar, json
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:08.