手动创建关联数组

时间:2010-12-02 16:51:09

标签: php arrays

我正在尝试使用动态数据创建一个关联数组,但遇到了一些麻烦。

我想从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($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
    )
)

1 个答案:

答案 0 :(得分: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
    }
 ....

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