2013-12-24 45 views
0

我試過尋找這個,因爲我不認爲這是獨一無二的,沒有人試圖去做。我只是無法找出正確的關鍵字來尋找我的答案!多維數組的PHP乘法值

我有這樣的陣列

array(
0 => array(
     'oranges'=> 4.00, 
     'apples' => 2.00, 
    ), 
1 => array(
     'oranges' => 2.00, 
     'apples' => 1.82, 
     'peaches' => 1.2, 
    ), 
2 => array(
     'oranges' => 2.20, 
    ), 
); 

我想要做的是找到所有的橘子值的值相乘左右(4 * 2 * 2.20)和所有的蘋果的值相乘左右(2 * 1.82)。 值的數組數量是可變的,並且數組內的值的數量是可變的。

+3

開始用'的foreach()'循環 – 2013-12-24 01:19:10

+0

我得那麼遠......這是一個有點毛茸茸當我在foreach中遇到foreach以及它們是否是先前的值集合時,即在array 1中,沒有先前的「桃子」實例,並且在array 2僅存在桔子。 – scottphpnewbie

+0

我已經給你一個答案,下次發佈你的代碼,以便我們可以看到你到目前爲止嘗試過的東西! – sjagr

回答

2

雖然sjagr的答案是最好的解決方案可能的,我有array_column(PHP 5> = 5.5.0),其僅需要一個foreach環的另一種方法:

<?php 
$arr = array(
    array(
     "oranges" => 4.00, 
     "apples" => 2.00 
    ), 
    array(
     "oranges" => 2.00, 
     "apples" => 1.82, 
     "peaches" => 1.2 
    ), 
    array(
     "oranges" => 2.20 
    ) 
); 
$_arr = array(); 
    foreach(array("oranges", "apples", "peaches") as $val){ 
    $_arr[$val] = array_product(array_column($arr, $val)); 
    } 
print_r($_arr); 
?> 

其結果將是:

Array 
(
    [oranges] => 17.6 
    [apples] => 3.64 
    [peaches] => 1.2 
) 

演示:https://eval.in/82322

3

這使用foreach,0 isset和您的普通的if/else語句的組合。因爲所有你做的是所有使用相同的按鍵的最低水平元素的產品

$products = array(); 
foreach ($array as $a) { 
    foreach ($a as $key => $value) { 
     if (!isset($products[$key])) $products[$key] = $value; 
     else $products[$key] = $products[$key] * $value; 
    } 
} 

var_dump($products); 

應該是不言自明的。