2

私はPHPに配列を持っています。ここにスニペットがあります:

$locations = array(
    array(
        "id" => 202,
        "name" => "GXP Club - Fable"
    ),

    array (
        "id" => 204,
        "name" => "GXP Club - Gray"
    )
);

私が(GETから)知っているのはID(202)です。表示したいのは、「の結果を表示しています」 ( where $locations[?][id] = $_GET['id'] { echo $locations[?][name] } ) です-疑似コードの使用をご容赦ください。

どの関数が最適か、それを見つけるために配列全体をループする必要があるかどうかはわかりません。ありがとう。

編集:さらに明確にするために。[id] が与えられた [name] を知る必要があります

4

4 に答える 4

3
foreach( $locations as $arr ) {
    if($arr['id'] == $_GET['id']) {
        echo $arr['name'];
        break;
    }
}

これでうまくいくはずです。

于 2012-08-29T16:40:17.397 に答える
0

$id=>$name説明されているように、配列をループすることが問題の解決策ですが、配列内のすべてのデータである場合は、名前付きのキー値ではなく、配列をキーと値のペアに変更する方が最適なようです。次に例を示します。

$locations = array( '202' => 'GXP Club - Fable',
                    '204' => 'GXP Club - Gray',
             )

または、さらにデータがある場合は、ネストされたデータ構造に切り替えます。たとえば、次のようになります。

$locations = array( '202' => array( 'name' => 'GXP Club - Fable', 'prop2' =>$prop2, etc),      
                    '204' => array( 'name' => 'GXP Club - Gray', 'prop2' =>$prop2, etc),
             )

これにより、ID (例: $locations[$id]['name']) を介してデータにアクセスできるようになります。これは、一般的にやりたいことのようです。

于 2012-08-29T16:42:16.307 に答える
0

array_mapカスタムアクションを特定の配列の各要素に適用する関数を使用できます。

array_map(
    function($arr) { if ($arr['id'] == $_GET['id']) echo $arr['name']; }, 
    $locations
);
于 2012-08-29T16:53:43.270 に答える