2017-03-24 107 views
-2

我有两个数组这样组合两个阵列,并添加阵列的价值算

$arr1 = array('Prabhash', 'Nagda', 'Sayyed','Prabhash'); 
$arr2 = array('4', '1', '2','5'); 
echo "<pre>"; 
print_r($arr1); 
print_r($arr2); 

而且我想这样的输出

Array 
(
[0] => Array 
    (
     [0] =>Prabhash 
     [1] =>9 
    ) 
[1] => => Array 
    (
     [0] =>Nagda 
     [1] =>1 
    ) 
[2] => => Array 
    (
     [0] =>Sayyed 
     [1] =>2 
    ) 

) 

我试图合并和合并数组,但没有成功,希望有人能帮助我做得更好。

+1

使用阵列合并 –

回答

2

PHP code demo

<?php 
$arr1 = array('Prabhash', 'Nagda', 'Sayyed','Prabhash'); 
$arr2 = array('4', '1', '2','5'); 
$result=array(); 
foreach($arr1 as $key => $value) 
{ 
    if(isset($result[$value])) 
    { 
     $result[$value][1]+=$arr2[$key]; 
    } 
    else 
    { 
     $result[$value]=array($value,$arr2[$key]); 
    } 
} 
$result= array_values($result); 
print_r($result); 

输出:

Array 
(
    [0] => Array 
     (
      [0] => Prabhash 
      [1] => 9 
     ) 

    [1] => Array 
     (
      [0] => Nagda 
      [1] => 1 
     ) 

    [2] => Array 
     (
      [0] => Sayyed 
      [1] => 2 
     ) 

) 
+0

感谢它为我工作 – Prabhash

+0

@Prabhash欢迎... :) –

0

试试吧。

<?php  
$arr1 = array('Prabhash', 'Nagda', 'Sayyed','Prabhash'); 
$arr2 = array('4', '1', '2','5'); 
$newArray = array(); 

foreach($arr1 as $key => $value) { 
    $newArray[$value][0] =$value; 
    if(!isset($newArray[$value][1]) || $newArray[$value][1] == null) 
     $newArray[$value][1] = $arr2[$key]; 
    else 
     $newArray[$value][1] = $newArray[$value][1]+$arr2[$key]; 
} 
$newArray = array_values($newArray); 

echo "<pre>"; 
print_r($newArray); 
?> 

OUTPUT:使用array_maparray_keysarray_fliparray_uniquearray_intersect_keyarray_sum功能

Array 
(
    [0] => Array 
     (
      [0] => Prabhash 
      [1] => 9 
     ) 

    [1] => Array 
     (
      [0] => Nagda 
      [1] => 1 
     ) 

    [2] => Array 
     (
      [0] => Sayyed 
      [1] => 2 
     ) 

) 
1

短溶液:

$arr1 = array('Prabhash', 'Nagda', 'Sayyed','Prabhash'); 
$arr2 = array('4', '1', '2','5'); 

$result = array_map(function($n) use($arr1, $arr2){ 
    $sum = array_sum(array_intersect_key($arr2, array_flip(array_keys($arr1, $n)))); 
    return [$n, $sum]; 
}, array_unique($arr1)); 

print_r($result); 

输出:

Array 
(
    [0] => Array 
     (
      [0] => Prabhash 
      [1] => 9 
     ) 

    [1] => Array 
     (
      [0] => Nagda 
      [1] => 1 
     ) 

    [2] => Array 
     (
      [0] => Sayyed 
      [1] => 2 
     ) 
) 
+0

OMG我刚回到这个页面吹嘘这个真棒单线我为这个问题和笑话有关使用这么多的功能在我的解决方案你已经发布了我的确切代码! AAAARGGH! (...给予好评) – mickmackusa