我有这两个数组:
$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,
);
其中键是代码,值是相对数量(在代码相同的位置添加)
最好的方法是什么? 谢谢!
答案 0 :(得分:1)
$arrResult = array ();
foreach ($arrCodes as $intIndex => $strCode)
{
$arrResult[$strCode] = $quantities[$intIndex] + intval(isset($arrResult[$strCode]) ? $arrResult[$strCode] : 0);
}
答案 1 :(得分:0)
首先,我们使用array_combine
来获取键和值,然后我们迭代数组以求和值。
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];
}
}