2012-03-04 18 views
17

sto provando a trasferire array multipli in 1 array grande, ottenendo un array di 2 lvl.php - push array in array - numero chiave

ho avuto questa serie di matrici ad esempio:

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

Ma, dopo gamma spinta, ottengo questa matrice:

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

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

) 

Fondamentalmente questo è quello che voglio fare, ma, se si nota dopo la spinta, le chiavi vengono dimenticate e convertite in numerico.

Questo è quello che voglio assomigliare:

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

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

) 

codice di esempio im utilizzando:

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

qualcuno può aiutarmi con esso?

risposta

36

Non utilizzare array_values sul $row

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

Inoltre, il modo preferito per aggiungere a valore ad un array sta scrivendo $array[] = $value;, non usando array_push

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

E una ulteriore ottimizzazione è di non chiamare mysql_fetch_array($result, MYSQL_ASSOC) ma di utilizzare mysql_fetch_assoc($result) direttamente.

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

'il modo preferito per aggiungere un valore a un array è scrivere $ array [] = $ valore; 'Questo è profondo, grazie, ricordando un io di quel bit aiuta a mantenere il programma semplice – pal4life

0

Utilizzare questo ..

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

'array_push' e questa sintassi è la stessa. –

+0

'array_push()' ** fa ** conserva le chiavi 'array_values ​​()' no. – Leigh

+0

Non ho usato array_push. Ho rimosso array_values ​​dalla risposta –

2

io penso che si debba andare per

$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

Prenderesti in considerazione l'aggiunta di qualche narrazione per spiegare perché questo codice funziona, e cosa ne fa una risposta alla domanda? Questo sarebbe molto utile per la persona che fa la domanda e per chiunque altro venga. –

+0

@ user1248047 non volevo imparare la funzione array_push, lui/lei solo per sapere come evitare di sostituire i valori chiave – SagarPPanchal

0

prima convertire l'array troppo JSON

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

poi vonvert appoggiarlo ad un array

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

buona fortuna