Disculpas por preguntas vagas, soy bastante nuevo. He estado buscando pero parece que no puedo encontrar la solución que se ajuste a mi escenario.

Estoy tratando de almacenar el resultado de una consulta mysql en bucle como una variable que se utilizará fuera del ciclo, exactamente como sería si imprimiera_r el resultado dentro del ciclo. Estoy tratando de ahorrar en gastos generales ya que heredé una función que usa este gran conjunto de datos con frecuencia y estoy tratando de reducir las llamadas a la base de datos guardando la salida en lugar de consultar la base de datos cada vez.

Actualmente tengo -

$data = array();
$sql = mysqli_query($con, SELECT * FROM my_table);
while($row = mysqli_fetch_assoc($sql)){
  $data[] = $row;
}
print_r($data);

Lo que resulta en:

Array ( 
[0] => Array ( [id] => 1 [name] => john [age] => 44  ) 
[1] => Array ( [id] => 2 [name] => paul [age] => 30  )
[2] => Array ( [id] => 3 [name] => george [age] => 25  )
)

PERO necesito una salida como esta, es decir, sin índices superiores ...

$output =

Array ( [id] => 1 [name] => john [age] => 44  ) 
Array ( [id] => 2 [name] => paul [age] => 30  )
Array ( [id] => 3 [name] => george [age] => 25  ) ;

Es tarde y mi cerebro me elude, muchas gracias por los consejos

1
midget 15 abr. 2020 a las 07:39

2 respuestas

El resultado y el resultado esperado son básicamente lo mismo porque como @Nick señaló necesitas tener claves de nivel superior (0,1,2). (¿Cómo identificarías qué identificación pertenece a John, Paul y George?)

Simplemente no es posible almacenar una matriz como esta:

Array ( [id] => 1 [name] => john [age] => 44  ) 
Array ( [id] => 2 [name] => paul [age] => 30  )
Array ( [id] => 3 [name] => george [age] => 25  )

Debe almacenarse así: (con teclas de nivel superior (en este caso: 0,1 y 2))

Array ( 
    [0] => Array ( [id] => 1 [name] => john [age] => 44  ) 
    [1] => Array ( [id] => 2 [name] => paul [age] => 30  )
    [2] => Array ( [id] => 3 [name] => george [age] => 25  )
)

El valor de $data[0]['name'] sería John, el valor de $data[1]['name'] sería Paul, etc.

Si hace referencia a $data[0], contiene la matriz: Array ( [id] => 1 [name] => john [age] => 44 )

Si hace referencia a $data[1], contiene la matriz: Array ( [id] => 2 [name] => paul [age] => 30 ) etc.

No es posible almacenar los valores que desee, pero, por supuesto, es posible obtener el resultado que desee:

//$data_value is an array in every row 
foreach($data as $data_value) {
    print_r($data_value);
}

Que produciría la salida:

Array
(
    [id] => 1
    [name] => john
    [age] => 44
)
Array
(
    [id] => 2
    [name] => paul
    [age] => 30
)
Array
(
    [id] => 3
    [name] => george
    [age] => 25
)
0
bestprogrammerintheworld 15 abr. 2020 a las 05:42

Haga esto:

$data = [];
$i = 0;
while ($row = mysqli_fetch_assoc($sql)) {
    foreach( $row as $field => $value) {
        $data[$i][$field] = $value:
    }
    $i++;
}

print_r($data)
-1
iJamesPHP2 15 abr. 2020 a las 04:47