我有一个来自AJAX请求的数组:
array (
[0] => 'lat,long@id_1'
[1] => 'lat,long@id_2'
[2] => 'lat,long@id_3'
)
这里的问题是我不会总是按照正确的顺序排列'这样的数组,所以看起来像这样:
array (
[0] => 'lat,long@id_1'
[1] => 'lat,long@id_2'
[2] => 'lat,long@id_3'
[3] => 'lat,long@id_1'
[4] => 'lat,long@id_3'
[5] => 'lat,long@id_2'
)
我需要获取每个id_X
的最后一个数组值(目前只有3个ID):
array (
[3] => 'lat,long@id_1'
[4] => 'lat,long@id_3'
[5] => 'lat,long@id_2'
)
如何根据部分字符串(id_X
)找到该数组的最后一个值?
答案 0 :(得分:1)
首先进行反向排序以确保首先解析最新值。然后通过循环运行它们,匹配部分字符串以获取ID,如果ID索引尚不存在,则将数据添加到数组中。最后的值将添加到您的数组中,其他值将被忽略。像这样:
rsort($ajaxy);
$lasts = [];
foreach($ajaxy as $str) {
$id = substr($str, strrpos($str, '@') + 1);
if (!isset($lasts[$id])) {
$lasts[$id] = $str;
}
}
var_dump($lasts);
如果你有一个巨大的数组,并且你知道你将获得的ID数量,你可以添加一个检查来在添加所有必需的ID时终止循环,以避免冗余处理。
否则,不要打扰反向排序,只是保持覆盖以前的值直到结束,但我发现这是一个更清洁的方法。 ^ _ ^