2011-02-26 40 views
10

Cuando uso ->fetchAll() con DOP, la matriz resultante se parece a esto cuando hago un print_r():PDO MySQL fetchAll() utilizando el doble de la memoria necesaria en el resultado?

Array 
(
    [0] => Array 
     (
      [week] => 2006-03-05 
      [0] => 2006-03-05 
      [ath] => 112.89166667 
      [1] => 112.89166667 
     ) 

    [1] => Array 
     (
      [week] => 2006-03-12 
      [0] => 2006-03-12 
      [ath] => 260.04527778 
      [1] => 260.04527778 
     ) 

    [2] => Array 
     (
      [week] => 2006-03-19 
      [0] => 2006-03-19 
      [ath] => 219.23472222 
      [1] => 219.23472222 
     ) 

etc., etc.

son los valores resultantes se almacenan en la memoria dos veces? Uno bajo un índice de matriz numérica como 0 y 1, y el otro bajo su índice nombrado, como week o ath?

Principalmente soy curioso. No espero que esto realmente impacte mi programa significativamente. Gracias.

Respuesta

16

¿Los valores resultantes se almacenan dos veces en la memoria?

Sí. Ver el manual:

PDO :: FETCH_BOTH (por defecto): devuelve una matriz indexada por nombre de columna y indexada 0 número de columna como se ha devuelto en el conjunto de resultados

uso opcional del parámetro a $fetch_style cambiar la forma en que fetchAll() se comporta.

$result = $sth->fetchAll(PDO::FETCH_ASSOC); 
+0

Ah gracias Pekka! No había entendido cuál era ese parámetro. – Brad

+0

y cómo obtener solo la matriz de números de columnas indexadas en 0? – beginner

Cuestiones relacionadas