只知道首字母缩写词(st,kg,lb)返回相应数组名称(石头,公斤,磅)的最佳方法是什么?
"weight" => [
"stone" => [
"acronym" => "st"
],
"kilogram" => [
"acronym" => "kg"
],
"pound" => [
"acronym" => "lb"
]
];
答案 0 :(得分:1)
function name($array,$t){
foreach($array as $k=>$a){
if($a['acronym']===$t){return $k;}
}
}
答案 1 :(得分:0)
有点冗长:
foreach($mainArray['weight'] as $key=>$value) {
if(is_array($value)) {
if(in_array($acronymValue, $value)) {
echo $key. "has the acronym value";
break;
}
}
}
以下是其工作演示:Fiddle
答案 2 :(得分:0)
您可以使用strtr();
(如果可以更改数组)
$converter = array(
'st' => 'stone',
'kg' => 'kilogram',
'lb' => 'pound',
);
echo strtr('st', $converter); // stone
答案 3 :(得分:0)
虽然问题已经得到解答,但我仍然认为使用回调匿名函数添加无循环版本。
function getData($arr, $needle)
{
$f = array_filter($arr['weight'], function($v) use ($needle) {
if($v["acronym"] == $needle){
return $v;
}
} );
list($k, $v) = each($f);
return $k;
}
echo getData($arr, "kg");