2011-07-24 4 views
1

これは私が配列内の要求された項目のキーを見つけるために使用する方法、要求されたアイテムのキーを配列で取得する方法は?

$items = array 
(
    '0' => array 
     (
      'mnu_id' => '1', 
      'pg_url' => 'home' 
     ), 

    '1' => array 
     (
      'mnu_id' => '5', 
      'pg_url' => 'about' 
     ), 

    '2' => array 
     (
      'mnu_id' => '6', 
      'pg_url' => 'venues' 
     ) 

); 

私は

while ($current = current($items)) 
{ 
    if ($current['pg_url'] == 'venues') { 
     $current_key = key($items); 
    } 
    next($items); 
} 

echo $current_key; 

、「会場」の値を要求するのであれば、私はどのキーを取得しています

を使用して配列をループすると、ちょっと時間がかかり、混乱してしまいます。なぜ私はコード内でnext()を使用しなければならないのか分かりません!

キーを取得するよりも優れた方法があるのだろうか?

+1

配列ポインタを進めるのでnext()を使う必要があります。 PHP Manualでcurrent/next/keyを参照してください。 – Gordon

答えて

0

は多分これは理解することが少し簡単です:

$current_key = -1; 
foreach($items as $key => $item) { 
    if($item['pg_url'] == 'venues') { 
    $current_key = $key; 
    } 
} 

は、私にはわからない、あなたがやろうとしている正確に何ができますが、依存配列から情報を取得するように思えますその後、

$items = array 
(
    'home' => array 
     (
      'mnu_id' => '1' 
     ), 

    'about' => array 
     (
      'mnu_id' => '5' 
     ), 

    'venues' => array 
     (
      'mnu_id' => '6' 
     ) 

); 

あなたは、単に

をチェックすることもできますpg_urlに...もしそうなら、多分キーとしてpg_urlを設定することがよりよいだろう
if(isset($items['venues'])) ... 
+0

ありがとうございます! – laukok

1
foreach (array_keys($items) as $key) { 
    if ($items[$key]['pg_url'] == 'venues') { 
    $current_key = $key; 
    // optionally use a break here to escape the loop 
    } 
} 
+0

ありがとうBobとGordon! – laukok

関連する問題