2010-12-02 167 views
0

我想用動態數據創建一個關聯數組,並且遇到了一些麻煩。手動創建一個關聯數組

我想在從MySQL查詢中獲取行時生成如下所示的數組。

Array 
(
    [0] = Array 
    (
    [name] => First 
) 
    [1] = Array 
    (
    [name] => Second 
) 
    [2] = Array 
    (
    [name] => Third 
) 
    [3] = Array 
    (
    [name] => Fourth 
) 
    [4] = Array 
    (
    [name] => Fifth 
) 
) 

我一直在嘗試使用array_merge,但它沒有給我我想要的結果。 Array_merge顯然不像foreach一樣在foreach中運行(我在沒有循環的情況下運行相同的代碼,沒有按照我需要的方式工作)。

基本上,這是我在做什麼目前(不工作):

foreach($idList as $id) 
{ 
    $arr[] = array_merge(array(), array('name' => $id)); 
} 

這給了我這樣的輸出:

Array 
(
    [0] = Array 
    (
     [name] => first 
    ) 
    [1] = Array 
    (
     [0] = Array 
     (
      [name] => first 
     ) 
     [name] => second 
    ) 
    [2] = Array 
    (
     [0] = Array 
     (
      [name] => first 
     ) 
     [1] = Array 
     (
      [0] = Array 
      (
       [name] => first 
      ) 
      [name] => second 
     ) 
     [name] => third 
    ) 
) 
+0

你試過`$ arr + = array('name'=> $ id);`? – stillstanding 2010-12-02 16:55:31

+0

問題只是我很愚蠢。 「做$ arr [] = array();」基本上是+ = – Nathan 2010-12-03 15:55:47

回答

1

你有幾個問題這裏。

主要是,你不能有兩次相同的索引。 'name'可以是索引的一次也是唯一一次,所以你'期望'的輸出是不可能的。

而且,這種說法是非常有問題的

foreach($idList as $id) 
{ 
    $arr[] = array_merge(array(), array('name' => $id)); 
} 

ARR [] = $ x是像推使用$。它在數組的後面添加了一個新元素,用數字索引。

您不需要使用array_merge。 array_merge返回第一個參數合併的第二個參數。你只是想添加一個新的元素。還有,你正在使用的線路還是你使用的線路array_merge($arr, array('name' => $id)); ???

嘗試:

foreach($idList as $id) 
{ 
    $arr[] = array('name' => $id); 
} 

,你會得到:

Array 
(
    [0] = Array 
    (
     [name] => first 
    ) 
    [1] = Array 
    (
     [name] => second 
    } 
.... 

等。我不確定這是否正是您想要的,但您首先提出的建議是不可能的。