0

我有这个数组:

Array
(
[0] => Array
    (
        [id] => 70170b60a4
        [name] => vip
    )

[1] => Array
    (
        [id] => 355a5f8cbd
        [name] => TEST LIST2
    )

[2] => Array
    (
        [id] => d1c2deef1d
        [name] => test list
    )

)

我称之为$listInfo。

现在我想从这个数组中获取信息并创建一个新的,如下所示:

  Array
( 
 [70170b60a4] => vip
 [355a5f8cbd] => TEST LIST2
 [d1c2deef1d] => test list
)

我这样做:

foreach ($listinfo as $key) {
$list = array($key['id'] => $key['name'] );
}

然后我想返回vip的值(id):

$listId = array_search('vip', $list);

我的问题是 foreach 循环只创建一个数组,其中包含第一个数组中的最后一个值。所以我得到:

Array
(
     [d1c2deef1d] => test list
)

谁能告诉我我做错了什么?我想要那里第一个数组中的所有值。非常感谢您的帮助。

4

3 回答 3

4

在您的foreach循环中,您每次都在创建一个新数组。

尝试这个:

$list = array();

foreach ($listinfo as $key) {
    $list[$key['id']] = $key['name'];
}
于 2012-08-23T14:45:42.653 回答
0

每次执行循环时都会创建一个新数组,试试这个:

$list = array();//make the array, once and only once
foreach ($listinfo as $key)
{
    $list[$key['id']] = $key['name'];//assign new key, new value to EXISTING array
}
于 2012-08-23T14:47:55.127 回答
0

那是因为您正在重新定义$list每个循环迭代。你想要做的是:

$list = array();
foreach($listinfo as $a) {
   $list[$a['id']] = $a['name'];
}
于 2012-08-23T14:45:52.583 回答