2012-08-23 44 views
0

我有此數組:

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

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

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

) 

我把它叫做$列表信息。

現在我想利用此數組中的信息,並創建一個新的,看起來像這樣:

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

然後我想返回:

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

我通過這樣做vip的值(id):

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

我的問題是,foreach循環只會創建一個數組,最後一個值在t他第一陣。所以我得到:

Array 
(
    [d1c2deef1d] => test list 
) 

誰能告訴我我做錯了什麼?我想要第一個數組中的所有值。非常感謝您的幫助。

回答

4

在您的foreach循環中,您每次都創建一個新數組。

試試這個:

$list = array(); 

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

+1 *不*提示'$名單[] = '。 –

+0

輸入比我快...... +1 –

+0

謝謝 - 這很好! – Bolli

0

那是因爲你正在重新定義$list每次循環。你想要做的是:

$list = array(); 
foreach($listinfo as $a) { 
    $list[$a['id']] = $a['name']; 
} 
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 
}