[
[mile] => [
[acronym] => mi
],
[kilometer] => [
[acronym] => km
]
]
$acronym = 'km';
如何从匹配的acronym
值返回密钥名称?在此示例中,我想返回kilometer
。
答案 0 :(得分:1)
这应该适合你:
在这里,我只需创建一个包含array_combine()
的数组,其中array_column()
使用键名acronym
作为键,$arr
作为<?php
$acronym = "km";
$arr = array_combine(array_column($arr, "acronym"), array_keys($arr));
echo $arr[$acronym];
?>
作为键值。
kilometer
输出:
document.body.clientHeight;
答案 1 :(得分:0)
您可以执行类似
的操作$array = array(
'mile'=>array('acronym'=>'mi'),
'kilometer'=>array('acronym'=>'km')
);
$acronym = 'km';
function get($each,$acronym)
{
foreach($each as $k => $v)
{
if($v['acronym'] == $acronym)
{
return $k;
}
}
}
get($array,$acronym);
答案 2 :(得分:0)
如果你的数组可以有多个级别,你可以使用stack
,并通过数组递归枚举,当你遇到acronym
键时,你在堆栈中有完整的键路径。像这样:
function findAcronym($array, $keyStack, &$result) {
foreach($array as $key => $value) {
if($key === 'acronym') {
$result[] = $keyStack;
} elseif(is_array($value)) {
$keyStack[] = $key;
findAcronym($value, $keyStack, $result)
}
}
}
你可以使用这样的功能:
$matches =[];
findAcronym($myArray, [], $matches);
$matches
将是一个键数组数组,每个键对应于一个键路径,可以将您带到acronym
。
由于函数是递归的,它可以像数组的多个级别一样深。