将数组元素作为参数传递给函数时可以携带数组元素的键吗?

问题描述 投票:0回答:1

给定这个数组:

$food = [
          'meat' => ['beef','chicken'],
          'veg' => ['salad','onions'],
           ]

还有这个功能

function foo($a) {
   print key($a);
}

调用

foo($food['meat'])
返回
0
而不是
meat

因为我需要知道我正在处理哪个元素,所以我可以简单地向函数添加另一个参数,但我想知道是否有一种方法可以访问原始密钥。

提前致谢。

php arrays
1个回答
0
投票

$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);
}
© www.soinside.com 2019 - 2024. All rights reserved.