-2

在我将结果集格式化为以下格式后,我得到了一个如下所示的数组。

Array
(
    [0] => xxx@2456
    [1] => xxx@2345
    [2] => xxy@1234
    [3] => xxy@123
    [4] => xyz@3456
);

我想要上面数组中的结果数组,如下所示。我正在考虑如何使用 PHP 字符串函数或有其他方法。

注意:可能有很多像上面这样的数组元素,但是在我们在“@”之后添加最后一个数字之后,我想要唯一的元素。

Array
(
    [0] =>  xxx@4801
    [1] =>  xxy@1464
    [2] =>  xyz@3456
);

任何想法如何进行......在上面的输出数组格式中,xxx@4801 是输入数组的 2345 和 2456 的总和......

4

2 回答 2

1

你可以试试

$unique = array_reduce($data, function ($a, $b) {
    $c = explode("@", $b);
    if (isset($a[$c[0]])) {
        $d = explode("@", $a[$c[0]]);
        $a[$c[0]] = $c[0] . "@" . ($c[1] + $d[1]);
    } else {
        $a[$c[0]] = $b;
    }
    return $a;
}, array());

echo "<pre>";
print_r(array_values($unique));

输出

Array
(
    [0] => xxx@4801
    [1] => xxy@1357
    [2] => xyz@3456
)

简单的在线演示

于 2013-01-02T07:35:06.893 回答
0

例如,您可以使用array_unique()函数并使用array_values()Find the code 重新索引它。

于 2013-01-02T07:34:48.660 回答