PHP bir dizi birleştirme?

1 Cevap php

Ben aşağıdaki gibi görünen bir dizi var:

Array (

[0] => Array
    (
        [id] => 10
        [value] => 5
    )

[1] => Array
    (
        [id] => 10
        [value] => 1
    )

[2] => Array
    (
        [id] => 11
        [value] => 1
    )

[3] => Array
    (
        [id] => 11
        [value] => 1
    )

)

Nasıl id dizi konsolide edebilir? Ben arıyorum edilen dizisi gibi bir şey olurdu:

Array (

[0] => Array
    (
        [id] => 10
        [value] => 6
    )

[1] => Array
    (
        [id] => 11
        [value] => 2
    )

)

1 Cevap

Bu, çok etkili bir yapı değildir. Bu formda bunu pekiştirmek düşündünüz mü?

array
(
    10 => 6,
    11 => 2,
);

Bu kimliği hızlı bir anahtar arama izin verecek.

Bu forma senin ilk dizi pekiştirmek için, sadece bunu:

$array2 = array();
foreach($array1 as $row)
{
    if(isset($array2[$row['id']]))
        $array2[$row['id']] += $row['value'];
    else
        $array2[$row['id']] = $row['value'];
}

Hangi size şeklinde bir dizi verecek:

$array2 = array
(
    10 => 6,
    11 => 2,
);

Eğer really senin talep formunda ihtiyacınız varsa, bir daha işlem döngü vardır onu alırsınız ...

$array3 = array();
foreach($array2 as $id => $value)
{
    $array3[] = array('id' => $id, 'value' => $value);
}

Yani, oraya gitmek!


Ve daha kompakt:

$array2 = array();
foreach($array1 as $row)
    $array2[$row['id']] = (isset($array2[$row['id']]) ? $array2[$row['id']] : 0) + $row['value'];

$array3 = array();
foreach($array2 as $id => $value)
    $array3[] = array('id' => $id, 'value' => $value);