在数组中查找部分字符串

时间:2016-12-26 18:59:18

标签: php arrays string

我有一个来自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)找到该数组的最后一个值?

1 个答案:

答案 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时终止循环,以避免冗余处理。

否则,不要打扰反向排序,只是保持覆盖以前的值直到结束,但我发现这是一个更清洁的方法。 ^ _ ^