我有这个数组:
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
)
谁能告诉我我做错了什么?我想要第一个数组中的所有值。非常感谢您的帮助。
答案 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
}