'red', 2 =-6ren">
gpt4 book ai didi

php - 如何在数组 php 中找到最后一次出现的 "needle"

转载 作者:可可西里 更新时间:2023-11-01 13:40:04 24 4
gpt4 key购买 nike

有一个内置函数用于查找值的数组键 - 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];
}
}
}

我想要更好的东西。

最佳答案

但是他们都错过了一件事,这会导致 OP 需要的结果不正确,他正在寻找最后一个元素的索引并且反转数组将导致重新索引键(当数字时),所以最终的解决方案是设置 preserve_keys 参数为 TRUE see docs :

$array = array(0 => 'blue', 1 => 'red', 2 => 'green', 3 => 'red');

$reversed = array_reverse($array, true);

echo array_search('red', $reversed);
// outs 3

关于php - 如何在数组 php 中找到最后一次出现的 "needle",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21223286/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com