这是我用来查找数组中所请求项的键的方法,
$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;
我得到的密钥是2。
我真的不喜欢这种方法,因为它有点冗长而且在使用while()
循环数组时让我感到困惑。我不明白为什么我也必须在代码中使用next()
!
我想知道是否有更好的方法来获取密钥?
答案 0 :(得分: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
}
}
答案 1 :(得分:0)
也许这更容易理解:
$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'])) ...