2010-12-02 139 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 
    } 
.... 

等。我不确定这是否正是您想要的,但您首先提出的建议是不可能的。