操纵多维数组

问题描述:

我有一个多维数组。由于字符串“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

$ 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 –

我认为这将更有意义返回关联数组,这样你可以做$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

$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

你可以使用

array_unique(Your_array, SORT_REGULAR);