合并Php阵列

时间:2017-05-04 09:32:28

标签: php arrays

我有这两个数组:

$codes = array (
  0 => 'SW10055', 
  1 => 'SW10050',
  2 => 'SW10050'
);

$quantities = array (
  0 => '2', 
  1 => '4',
  2 => '3'
);

第一个数组的每个值对应于同一位置的第二个数组中的值。

所以'SW10055'对应'2',第一个'SW10050'对应'4',第一个'SW10050'的最后一个元素对应'3'。

我需要创建一个这样的数组:

$result = array(
   'SW10055' => 2,
   'SW10050' => 7,
); 

其中是代码,是相对数量(在代码相同的位置添加)

最好的方法是什么? 谢谢!

3 个答案:

答案 0 :(得分:1)

$arrResult  = array ();
foreach ($arrCodes as $intIndex => $strCode)
{
    $arrResult[$strCode] = $quantities[$intIndex] + intval(isset($arrResult[$strCode]) ? $arrResult[$strCode] : 0);
}

答案 1 :(得分:0)

首先,我们使用array_combine来获取键和值,然后我们迭代数组以求和值。

Try this code snippet here     

ini_set('display_errors', 1);
$codes = array (
  0 => 'SW10055', 
  1 => 'SW10050',
  2 => 'SW10050'
);

$quantities = array (
  0 => '2', 
  1 => '4',
  2 => '3'
);
$array=  array_combine($quantities, $codes);
$result=array();
foreach($array as $count => $code)
{
    if(isset($result[$code]))
    {
        $result[$code]+=$count;
    }
    else
    {
        $result[$code]=$count;
    }
}
print_r($result);

<强>输出:

Array
(
    [SW10055] => 2
    [SW10050] => 7
)

答案 2 :(得分:0)

只需遍历数组并从中创建一个新数组

$result = [];
foreach ($codes as $i => $code) {
    if (isset($result[$code])) {
        $result[$code] += $quantities[$i];
    } else {
        $result[$code] = $quantities[$i];
    }
}