【问题标题】:How to get the key of a requested item in an array?如何获取数组中请求项的键?
【发布时间】:2011-07-24 11:24:40
【问题描述】:

这是我用来在数组中查找请求项的键的方法,

$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'
        )

);

所以如果我请求“venues”的值,

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

echo $current_key;

我得到了 2 的密钥。

我不太喜欢这种方法,因为它有点冗长,并且在使用while() 循环数组时让我感到困惑。我不明白为什么我也必须在代码中使用next()

不知道有没有比这更好的方法来获取密钥?

【问题讨论】:

  • 你必须使用 next() 因为它推进了数组指针。请在 PHP 手册中查找 current/next/key。

标签: php multidimensional-array key


【解决方案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
  }
}

【讨论】:

    【解决方案2】:

    也许这更容易理解:

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

    我不知道,你到底想做什么,但似乎你想根据 pg_url 从数组中检索信息......如果是这样,也许将 pg_url 设置为键会更好:

    $items = array
    (
        'home' => array
            (
                'mnu_id' => '1'
            ),
    
        'about' => array
            (
                'mnu_id' => '5'
            ),
    
        'venues' => array
            (
                'mnu_id' => '6'
            )
    
    );
    

    那么你可以简单地检查

    if(isset($items['venues'])) ...
    

    【讨论】:

      猜你喜欢
      • 2015-09-16
      • 2021-12-05
      • 1970-01-01
      • 2021-12-03
      • 2018-10-24
      • 2020-10-26
      • 1970-01-01
      • 2020-08-30
      • 1970-01-01
      相关资源
      最近更新 更多