1

私はこの配列を持っています:

 Array
    (
        [0] => Array
            (
                [id] => new@particip.pl
                [challs] => 
            )

        [1] => Array
            (
                [id] => new@email.pl
                [challs] => 551
            )

        [2] => Array
            (
                [id] => new@email.pl
                [challs] => 551
            )

        [3] => Array
            (
                [id] => new@email.pl
                [challs] => 553
            )

        [4] => Array
            (
                [id] => new@email.pl
                [challs] => 553
            )

        [5] => Array
            (
                [id] => info@mail.com
                [challs] => 
            )

    )

これを一意の電子メール アドレスと参加済みのチャットで配列するには、たとえば、次のようにします。

Array
(
    [0] => Array
        (
            [id] => new@particip.pl
            [challs] => 
        )

    [1] => Array
        (
            [id] => new@email.pl
            [challs] => 551, 553
        )


    [2] => Array
        (
            [id] => info@email.com
            [challs] => 
        )

)

ソートできますか、それとも forach inarray を実行する必要がありますか? 誰かがそれを行う方法を考えていましたか?

4

2 に答える 2

0
$emailsSeen = array();

foreach($array as $key => &$item) {
    if(in_array($item['id'], $emailsSeen) {
        //concatenate 'challs' of repeated email to first occurence of email in $array
        $array[array_search($item['id'], $emailsSeen)]['challs'] .= ', ' . $item['challs'];
        //remove duplicate email item from $array
        unset($array[$key']);
    } else {
        $emailsSeen[$key] = $item['id'];
    }
}

//To reindex the array
$array = array_values($array);
于 2013-05-16T21:55:26.807 に答える