2012-03-04 79 views
17

我試圖將多個數組推入1個大數組,導致2個lvl數組。php - 將數組推入數組 - 鍵盤問題

我得到例如這組陣列:

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

但是,陣推後,我得到這個數組:

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

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

) 

基本上這就是我想做的事情,但是,如果您注意推後,鍵被遺忘,並轉換爲數字。

這就是我想要它看起來像:

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

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

) 

示例代碼即時通訊使用:

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

有人可以幫助我呢?

回答

36

不要在你的$row

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

另外,添加a的首選方式值到一個數組是寫$array[] = $value;,不使用array_push

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

並進一步優化是不是叫mysql_fetch_array($result, MYSQL_ASSOC)而是直接使用mysql_fetch_assoc($result)

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

'向數組添加值的首選方式是寫入$ array [] = $ value; '這是非常深刻的,謝謝,提醒一個自我,有助於保持程序的簡單 – pal4life 2015-04-30 11:16:47

0

使用這個..

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

'array_push',這個語法是一樣的。 – 2012-03-04 12:27:19

+0

'array_push()'**不會**保存鍵'array_values()'不會。 – Leigh 2012-03-04 12:27:41

+0

我沒有使用array_push。我已經從答案 – 2012-03-04 12:28:55

2

我認爲你必須去

$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

你會考慮增加一些敘述來解釋爲什麼這個代碼有效,是什麼使它成爲這個問題的答案?這對詢問問題的人以及任何其他人來說非常有幫助。 – 2013-03-11 18:46:42

+0

@ user1248047不想學習array_push函數,他/她只是想知道如何防止替換鍵值 – SagarPPanchal 2014-02-04 05:45:43

0

先轉換你的陣列太JSON

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

然後vonvert回陣列

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

祝你好運