2016-05-05 13 views
-2

Helfen Sie mir bitte Array-Werte zu kombinieren. Ich habe das gleiche Array: In meinem Fall sollte ich Kunden Namen wie einen Schlüssel speichern.Kombinieren Sie die gleichen Werte im Array

Array 
(
    [Test Name] => Array 
     (
      [0] => Array 
       (
        [name] => 
        banana 
        [id] => 
        45002 
        [quantity] => 
        10 
       ) 
      [1] => Array 
       (
        [name] => 
       banana 
        [id] => 
       45002 
        [quantity] => 
        20 
       ) 
      [3] => Array 
       (
        [name] => 
        apple 
        [id] => 
        23402 
        [qua] => 
        1 
       ) 

      [5] => Array 
       (
        [name] => 
        cherry 
        [id] => 
        40017 
        [qua] => 
        7 
       ) 

Wie so etwas bekommen:

Array 
(
    [Test Name] => Array 
     (
      [0] => Array 
       (
        [name] => 
        banana 
        [id] => 
        45002 
        [quantity] => 
        30 // summ quantity but unique name and id 
       ) 
      [1] => Array 
       (
        [name] => 
        apple 
        [id] => 
        23402 
        [qua] => 
        1 
       ) 

      [2] => Array 
       (
        [name] => 
        cherry 
        [id] => 
        40017 
        [qua] => 
        7 
       ) 

In meinem Fall sollte ich Kunden wie ein Schlüssel Namen speichern. Dann werde ich dies auf eine Tabelle hochladen.

+0

Siehe [hier] (http://stackoverflow.com/questions/19299166/php-array-find-duplicates-sum-them-up-delete-duplicates) – fusion3k

+0

Hallo. Sie benötigen Menge & qua als verschiedene Felder oder gleich? – sujivasagam

Antwort

0

können Sie verwenden array_map und array_reduce es zu erreichen:

$results = array_map(function ($result) { 
    return array_reduce($result, function ($carry, $item) { 
     if (isset($carry[$item['id']])) { 
      $carry[$item['id']]['quantity'] += $item['quantity']; 
     } else { 
      $carry[$item['id']] = $item; 
     } 
     return $carry; 
    }, array()); 
}, $results); 

Aus der Dokumentation:

array_map() gibt ein Array alle Elemente von array1, nachdem die Callback-Funktion auf jede Anwendung ein.

array_reduce() wendet iterativ die Callback-Funktion auf die Elemente des Arrays an, um das Array auf einen einzelnen Wert zu reduzieren.

In unserem Fall des angegebenen Rückruf an die array_reduce Funktion gibt eine endgültige Anordnung, die durch id einzigartige Elemente enthält.

+0

Es hilft mir, kannst du erklären, wie es funktioniert?) TY –

Verwandte Themen