重新定义数组,搜索并返回$ var

时间:2012-08-23 14:43:22

标签: php arrays

我有这个数组:

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
)

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

3 个答案:

答案 0 :(得分:4)

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

试试这个:

$list = array();

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

答案 1 :(得分:0)

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

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

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