[
[mile] => [
[acronym] => mi
],
[kilometer] => [
[acronym] => km
]
]
$acronym = 'km';如何从匹配的acronym值返回密钥名?在本例中,我希望返回kilometer。
发布于 2015-05-14 07:37:02
这应该适用于你:
在这里,我只需使用array_combine()创建一个数组,其中我使用array_column()和键名acronym作为键,使用来自$arr的array_keys()作为值。
<?php
$acronym = "km";
$arr = array_combine(array_column($arr, "acronym"), array_keys($arr));
echo $arr[$acronym];
?>产出:
kilometer发布于 2015-05-14 07:30:13
你可以做这样的事
$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);发布于 2015-05-14 07:32:17
如果数组可以有多个级别,则可以使用一个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路径的键路径。
由于该函数是递归的,因此它可以深入到数组所具有的多个级别。
https://stackoverflow.com/questions/30231557
复制相似问题