簡體   English   中英

PHP 將數組中的值相乘,其中在多維數組中具有相同的元素

[英]PHP Multiply Value in array where has same element in multidimentional array

有人可以解釋我如何乘以這段代碼的值嗎? 我試過但仍然無法解決這個問題

arrayK(
     0 => array(
          'name'=> AA,
          'value' => 2.00,
          ),
     1 => array(
          'name' => AA,
          'value' => 1.82,
          ),
     2 => array(
          'name' => BB,
          'value' => 2.20,
          ),
    3 => array(
          'name' => AA,
          'value' => 4.20,
          ),
    4 => array(
          'name' => BB,
          'value' => 4.20,
          ),
    );

答案應該返回到具有相同名稱的值已經相乘的數組

newArray(
     0 => array(
            'name'=> AA,
            'value' => ...,
          ),
     1 => array(
            'name' => BB,
            'value' => ....,
          ),
);

乘以重復值並獲得新數組:

$array=array(
  0 => array(
       'name'=> AA,
       'value' => 2.00,
       ),
  1 => array(
       'name' => AA,
       'value' => 1.82,
       ),
  2 => array(
       'name' => BB,
       'value' => 2.20,
       ),
 3 => array(
       'name' => AA,
       'value' => 4.20,
       ),
 4 => array(
       'name' => BB,
       'value' => 4.20,
       ),
    );

  $result = array();
  foreach ($array as $val) {
      if (!isset($result[$val['name']]))
          $result[$val['name']] = $val;
      else
          $result[$val['name']]['value'] *= $val['value'];
  }
  $result = array_values($result); // reindex array
  echo "<pre>";
  print_r($result); 

您可以嘗試以下解決方案。

$arrayK = array(
0 => array(
    'name'=> "AA",
    'value' => 2.00,
),
1 => array(
    'name' => "AA",
    'value' => 1.82,
),
2 => array(
    'name' => "BB",
    'value' => 2.20,
),
3 => array(
    'name' => "AA",
    'value' => 4.20,
),
4 => array(
    'name' => "BB",
    'value' => 4.20,
),
);

$temp = array_values((array_unique(array_column($arrayK, 'name'))));

$arrayY = [];
for( $i = 0; $i < count($temp); $i++ ) {
    foreach( $arrayK as $key => $val ) {
        if( $val['name'] == $temp[$i] ) {
            $arrayY[$i] = [
                'name' => $val['name'],
                'value' => isset($arrayY[$i]['value']) ? $val['value'] * $arrayY[$i]['value'] : $val['value']
            ];
        }
    }
}
print_r($arrayY);

輸出

Array
(
    [0] => Array
        (
            [name] => AA
            [value] => 15.288
        )

    [1] => Array
        (
            [name] => BB
            [value] => 9.24
        )

)

你可以在這里玩代碼

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM