2012-03-04 17 views
17

estoy tratando de insertar varias matrices en una gran matriz, lo que da como resultado una matriz de 2 lvl.php - empujar matriz en matriz - cuestión clave

Tengo este conjunto de matrices, por ejemplo:

 
Array 
(
    [cod] => ddd 
    [denum] => ffffffffffffffff 
    [descr] => ggggggg 
    [cant] => 3 
) 
Array 
(
    [cod] => fff 
    [denum] => dfgdfgdfgdfgdfg 
    [descr] => dfgdfgdfgdfgdfg 
    [cant] => 33 
) 

Pero, después de gama empujón, me sale este arreglo:

 
Array 
(
    [0] => Array 
     (
      [0] => ddd 
      [1] => ffffffffffffffff 
      [2] => ggggggg 
      [3] => 3 
     ) 

    [1] => Array 
     (
      [0] => fff 
      [1] => dfgdfgdfgdfgdfg 
      [2] => dfgdfgdfgdfgdfg 
      [3] => 33 
     ) 

) 

Básicamente esto es lo que quiero hacer, pero, si se da cuenta después del empuje, las teclas se olvidan y se convierten a números.

Esto es lo que quiero que se vea como:

 
Array 
(
    [0] => Array 
     (
      [cod] => ddd 
      [denum] => ffffffffffffffff 
      [descr] => ggggggg 
      [cant] => 3 
     ) 

    [1] => Array 
     (
      [cod] => fff 
      [denum] => dfgdfgdfgdfgdfg 
      [descr] => dfgdfgdfgdfgdfg 
      [cant] => 33 
     ) 

) 

código de ejemplo im usando:

$res_arr_values = array(); 
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) 
    { 
     array_push($res_arr_values, array_values($row)); 
    } 

¿Puede alguien ayudarme con esto?

Respuesta

36

No utilice array_values en su $row

$res_arr_values = array(); 
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) 
    { 
     array_push($res_arr_values, $row); 
    } 

Además, la forma preferida de agregar un valor a un array está escribiendo $array[] = $value;, no usar array_push

$res_arr_values = array(); 
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) 
    { 
     $res_arr_values[] = $row; 
    } 

Y una optimización adicional es no llamar mysql_fetch_array($result, MYSQL_ASSOC) sino utilizar mysql_fetch_assoc($result) directamente.

$res_arr_values = array(); 
while ($row = mysql_fetch_assoc($result)) 
    { 
     $res_arr_values[] = $row; 
    } 
+2

'la forma preferida de agregar un valor a una matriz es escribiendo $ array [] = $ value; 'Esto es profundo, gracias, recordar a uno mismo que ese bit ayuda a mantener el programa simple – pal4life

0

Utilice esta ..

$res_arr_values = array(); 
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) 
{ 
    $res_arr_values[] = $row; 
} 
+0

'array_push' y esta sintaxis es la misma. –

+0

'array_push()' ** does ** preserve keys 'array_values ​​()' no. – Leigh

+0

No usé array_push. He eliminado array_values ​​de la respuesta –

2

Yo creo que hay que ir a por

$arrayname[indexname] = $value; 
-1
$res_arr_values = array(); 
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) 
{ 
    $res_arr_values[] = $row; 
} 


array_push == $res_arr_values[] = $row; 

example 

<?php 
$stack = array("orange", "banana"); 
array_push($stack, "apple", "raspberry"); 
print_r($stack); 

Array 
(
    [0] => orange 
    [1] => banana 
    [2] => apple 
    [3] => raspberry 
) 
?> 
+6

¿Consideraría agregar alguna narración para explicar por qué funciona este código y qué hace que sea una respuesta a la pregunta? Esto sería muy útil para la persona que hace la pregunta y para cualquier otra persona que se presente. –

+0

@ user1248047 no quería aprender la función array_push, solo para saber cómo evitar la sustitución de valores clave – SagarPPanchal

0

primero convertir la matriz demasiado JSON

while($query->fetch()){ 
    $col[] = json_encode($row,JSON_UNESCAPED_UNICODE); 
} 

continuación vonvert una copia a la matriz

foreach($col as &$array){ 
    $array = json_decode($array,true); 
} 

buena suerte

Cuestiones relacionadas