父数组键数组值

时间:2014-01-31 06:11:46

标签: php arrays

只知道首字母缩写词(st,kg,lb)返回相应数组名称(石头,公斤,磅)的最佳方法是什么?

        "weight" => [

            "stone" => [
                "acronym" => "st"
            ],
            "kilogram" => [
                "acronym" => "kg"
            ],
            "pound" => [
                "acronym" => "lb"
            ]

        ];

4 个答案:

答案 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");