2017-04-02 69 views
-2

我有一個多維數組。由於字符串「volvo」的值出現兩次,所以我想合併這些鍵。這裏的源陣列:操縱多維數組

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 
     ) 

) 

,我想將其轉換爲這一個:

Array 
(

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

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

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

你嘗試過什麼? – hassan

+0

<?php \t function getSummary($ data){ \t \t $ result = array(); \t \t foreach($ data as $ key => $ row){ \t \t \t $ temp = $ row; \t \t \t如果 \t \t \t \t array_push($結果,$ TEMP)(in_array($溫度,$數據)!); \t \t \t別的 \t \t \t \t $結果[$鍵] [1] + = $溫度[1]; \t \t return $ result; (數組(「沃爾沃」,22),數組(「寶馬」,15),數組(「薩博」,5),數組(「 \t print(「

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

+0

對不起,我不習慣多維數組。 :) thnx –

回答

0

我認爲這將更有意義返回關聯數組,這樣你可以做$arr["volvo"],如果你對關聯數組沒有問題,只需刪除第二個foreach循環。

如果不是,這會得到正確的輸出:

<?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); 

?> 

下面是一個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回答這個問題。似乎函數isset比使用in_array更好(我在說php)。 thnx @ r4ccoon –

+0

如果您認爲我的回答良好,請標記爲答案 – r4ccoon

-1

你可以使用

array_unique(Your_array, SORT_REGULAR);