-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()て、たとえばコードの検索でインデックスを再作成できます。

于 2013-01-02T07:34:48.660 に答える