给定这个数组:
$food = [
'meat' => ['beef','chicken'],
'veg' => ['salad','onions'],
]
还有这个功能
function foo($a) {
print key($a);
}
调用
foo($food['meat'])
返回 0
而不是 meat
因为我需要知道我正在处理哪个元素,所以我可以简单地向函数添加另一个参数,但我想知道是否有一种方法可以访问原始密钥。
提前致谢。
$food['meat']
是索引数组['beef','chicken']
,可以认为是:
[
0 => 'beef',
1 => 'chicken',
]
即,不再有任何与其关联的“父”键,您会在函数内丢失该信息。
如果您想知道密钥是什么,则必须将其作为第二个参数传递:
function foo($key, $values) {
echo "key is $key\n";
echo "processing values: ";
print_r($values);
}
foo('meat', $food['meat']);
然后你可以非常轻松地迭代:
foreach ($food as $type => $foods) {
foo($type, $foods);
}