PHP - 组合来自两个数组的多个值

时间:2014-08-07 12:23:42

标签: php arrays

我从两个不同的数组中提取值来生成只有我想要的值的新数组。这是两个脚本。我基本上可以找到游戏中所有团队的总收入。

脚本1

$allSales = array();
foreach ($game['sales'] as $sale) {
  foreach ($sale['values'] as $id => $values) {
    $allSales[$id]+=$values['y'];
  }
}  

print_r($allSales);

脚本2

$allPrices = array();
foreach ($game['products'] as $id => $product) {
  $allPrices[$id]+=$product['Price'];
}    

print_r($allPrices);

我得到的值看起来像这样:

Array ( [0] => 500000000 [1] => 300000000 ) 
Array ( [0] => 300 [1] => 600 )

我希望能够以相同的位置顺序将一个数组与另一个数组相乘。所以500000000 * 300300000000 * 600生成一个新数组。

我想要一个新数组的原因是因为我将它们从最大值到最小值进行排序,并为所有值添加排名。我有另一个变量确定了当前球队的总销售收入,我将比较他们的排名。

3 个答案:

答案 0 :(得分:2)

也许是这些方面的东西:

$result = array_map(function($a,$b){ return $a*$b; }, $array1, $array2);

请参阅http://php.net/manual/en/function.array-map.php

证明:

~$ php -a
Interactive shell

php > $result = array_map(function($a,$b){ return $a*$b; }, array(1,2), array(3,4));
php > print_r($result);
Array
(
    [0] => 3
    [1] => 8
)
php > 

答案 1 :(得分:1)

当两个数组具有相同的长度时,您可以执行

$comparison = array();
foreach ($allPrices as $index => $value) {
  $comparison[$index] = $value * $allSales[$index];
}

print_r($comparison);

答案 2 :(得分:1)

$finalArray = array();
foreach ($allSales as $id => $eachSale) {
    $finalArray[$id]=$eachSale * $allPrices[$id];
} 
print_r($finalArray );
相关问题