2015-05-22 30 views
-1
Array 
(
[0] => Array 
    (
     [0] => 17 
     [1] => 111 
    ) 
[1] => Array 
    (
     [0] => 17 
     [1] => 10 
    ) 
[2] => Array 
    (
     [0] => 20 
     [1] => 111 
    ) 
) 

的vaues总结我想这个数组转换为:转换多维数组中的一个维数组由像这里显示

array 
(
    [17]=>121 
    [20]=>111 
) 

有任何PHP阵列功能,可以很容易地做到这一点。我知道另一种方式,但想知道是否有任何现成的功能可以做到这一点? 请帮助。

在这里,我其实是想

[0] => Array 
    (
     [0] => 17 
     [1] => 111 
    ) 

17转换为重点,采取111值,那么在接下来的阵列

[1] => Array 
    (
     [0] => 17 
     [1] => 10 
    ) 

做同样的事情得到第一个值17项,并添加10到先前值111 ,其是121,然后 [2] =>数组 ( [0] => 20 [1] => 111 ) 以20为键,并将值111分配给该键,所以基本上,我希望将第一个值作为键,将第二个值作为值,对于所有相同的键,我想要按照前面所述添加值。 我想可能有任何PHP现成的函数,因为我已经看到PHP中有很多可用的数组处理函数。现在,我意识到没有任何这样的功能可用。我可以为此做自己的自定义代码,但正在寻找合适的逻辑解决方案。

+1

那是一个太特殊了。你只能使用foreach或array_walk或者什么,你可以在哪里描述你的目标......你想要一个例子还是另一种已知的方式? –

+1

1)您试图将一个*二维*数组转换为*一维*一个。 2)请*表明*您想要**按键求和**值;不要让我们猜测。 – deceze

+0

因此,结论是没有任何内置功能...我解决了自定义功能的问题....谢谢你的帮助...谢谢你的负面观点也... – mohitesachin217

回答

1

没有内建函数,但它是一个简单的foreach循环。假设你的数组存储在变量$ arr中;

$return = array(); 
foreach ($arr as $a) { 
    $return[$a[0]] += $a[1]; 
} 
echo "<pre>"; print_r($return); 

如果您呼叫多次,那么你可以很容易地编写自己的功能

$arr[0]= array(17,111); 
$arr[1]= array(17,10); 
$arr[2]= array(20,111); 

$return = subArr($arr); 
echo "<pre>"; print_r($return); 

function subArr($arr) { 
    $result = array(); 
    foreach ($arr as $a) { 
     $result[$a[0]] += $a[1]; 
    } 
    return $result; 
}