有一个内置函数用于查找值对应的数组键 - array_search
。但是,如示例所示,此函数仅找到第一个匹配项,而我需要最后一个:
<?php
$array = array(0 => 'blue', 1 => 'red', 2 => 'green', 3 => 'red');
$key = array_search('green', $array); // $key = 2;
$key = array_search('red', $array); // $key = 1;
?>
这方面有没有内置函数呢?
如果没有,我可以反向使用 foreach
吗(从最后一个键到第一个键)?
如果所有的答案都是否定的,我想这是唯一的解决方案:
function array_search_last($needle, $array, $strict = false) {
$keys = array_keys($array);
//Not sure how smart PHP is, so I'm trying to avoid IF for every iteration
if($strict) {
for($i=count($keys)-1; $i>=0; $i--) {
//strict search
if($array[$keys[$i]]===$needle)
return $keys[$i];
}
}
else {
for($i=count($keys)-1; $i>=0; $i--) {
//benevolent search
if($array[$keys[$i]]==$needle)
return $keys[$i];
}
}
}
我希望有更好的选择。