2017-04-02 6 views
-2

Ich habe ein multidimensionales Array. Da der Wert der Zeichenfolge "volvo" zweimal vorhanden ist, möchte ich diese Schlüssel kombinieren. Hier ist die Source-Array:manipulierenden mehrdimensionalen Array

Array 
(

    [0] => Array 
     (
      [0] => Volvo 
      [1] => 22 
     ) 

    [1] => Array 
     (
      [0] => BMW 
      [1] => 15 
     ) 

    [2] => Array 
     (
      [0] => Saab 
      [1] => 5 
     ) 

    [3] => Array 
     (
      [0] => Volvo 
      [1] => 17 
     ) 

) 

und ich möchte es konvertieren, um diese:

Array 
(

    [0] => Array 
     (
      [0] => Volvo 
      [1] => 39 
     ) 

    [1] => Array 
     (
      [0] => BMW 
      [1] => 15 
     ) 

    [2] => Array 
     (
      [0] => Saab 
      [1] => 5 
     ) 
) 
+1

was haben Sie versucht? – hassan

+0

$ Zeile) { \t \t \t $ temp = $ Zeile; \t \t \t wenn \t \t \t \t array_push ($ result, $ temp) (in_array ($ temp, $ data)!); \t \t \t sonst \t \t \t \t $ result [$ key] [1] + = $ temp [1]; \t \t Rückgabe $ Ergebnis; \t \t $ data = Array (Array ("Volvo", 22), Array ("BMW", 15), Array ("Saab", 5), Array ("Volvo", 17)); \t drucken ("

"); \t print_r(getsummary($data)); \t print("
"); –

+0

Tut mir leid, ich bin nicht zu mehrdimensionalen Array verwendet. :) thnx –

Antwort

0

Ich denke, das mehr Sinn machen würde, ein zugeordnetes Array zurück, dass, wie Sie kann $arr["volvo"] tun, wenn Sie mit einem zugeordneten Array in Ordnung sind, nur entfernen Sie die zweite foreach Schleife.

Wenn nicht, wird dies die korrekte Ausgabe:

<?php 

$arr = Array (
    Array (
     "Volvo", 
     22 
    ), 
    Array (
     "BMW", 
     15 
    ), 
    Array (
     "Saab", 
     5 
    ), 
    Array (
     "Volvo", 
     17 
    ) 
); 

$tmpNewArr = Array(); 
foreach ($arr as $ele) { 
    if (!isset($arr[$ele[0]])) { 
     $tmpNewArr[$ele[0]] = 0; 
    } 
    $tmpNewArr[$ele[0]] += $ele[1]; 
} 
$newArr = []; 
foreach ($tmpNewArr as $key => $ele) { 
    array_push($newArr,[$key,$ele]); 
} 

var_dump($newArr); 

?> 

Hier ist ein eval.in:

https://eval.in/766340

0
$keyValueCars = []; 
foreach($cars as $car){ 
    $brand = $car[0]; 
    $total = $car[1]; 
    if(!isset($keyValueCars[$brand])){ 
     $keyValueCars[$brand] = total; 
    } 
    else{ 
     $keyValueCars[$brand] += total; 
    } 
} 
+0

thnx zum Beantworten der Frage. scheint Funktion iset ist mehr vorzuziehen als mit in_array (ich sprach auf PHP). thnx @ r4ccoon –

+0

Bitte als Antwort markieren, wenn Sie meinen, dass meine Antwort in Ordnung ist – r4ccoon

-1

Sie könnten

verwenden
array_unique(Your_array, SORT_REGULAR); 
Verwandte Themen