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これは、ループの反復ごとに再定義しているためです。あなたがしたいことは:

$list = array();
foreach($listinfo as $a) {
   $list[$a['id']] = $a['name'];
}
于 2012-08-23T14:45:52.583 に答える
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 に答える