为了账号安全,请及时绑定邮箱和手机立即绑定

基于键 PHP 的值总和

基于键 PHP 的值总和

PHP
holdtom 2022-10-14 15:30:34
我们在 PHP 中有类似下面的数组,并且想要在新数组中创建一个新数组,应该有唯一的键,并且应该添加来自同一键的值。Array(    [0] => Array        (            [58] => 32.00        ))Array(    [0] => Array        (            [58] => 34.00        ))Array(    [0] => Array        (            [57] => 26.00        ))Array(    [0] => Array        (            [57] => 27.00        ))Array(    [0] => Array        (            [56] => 16.00        ))Array(    [0] => Array        (            [56] => 17.00        ))我们想在上述数组的帮助下创建新数组。应添加相同键的值。新数组的输出应如下所示。Array(    [58] => 66    [57] => 53    [56] => 33)代码如下minmaxarray 的输出是Array(    [0] => Array        (            [min] => 35.00            [max] => 50.00            [price] => 26.00        )    [1] => Array        (            [min] => 50.00            [max] => 80.00            [price] => 29.00        )    [2] => Array        (            [min] => 80.00            [max] => 100.00            [price] => 32.00        )    [3] => Array        (            [min] => 100.00            [max] => 150.00            [price] => 34.00        )    [4] => Array        (            [min] => 150.00            [max] => 180.99            [price] => 36.00        )) $shippingPrice = array();            foreach ($minmaxarray as $key => $value) {                if($price >  $value['min'] && $price <  $value['max'])                {                    if($value['price'])                    {                    $shippingPrice[][$smethodid] = $value['price'];                    break;                    }                }            }            echo '<pre>'; print_r ($shippingPrice);谢谢
查看完整描述

3 回答

?
汪汪一只猫

TA贡献1898条经验 获得超8个赞

如果您的数组结构始终与您发布的相同,那么此代码将为您工作:


$example_array = array(

  array( '0' => 32.00 ),

  array( '2' => 32.00 ),

  array( '2' => 32.00 )

);


$new_array = array();


// loop through every item in nested foreach

foreach( $example_array as $value ) {

  foreach( $value as $key => $number )  {

    // if the array key not exist, calculate with 0, otherwise calculate with the actual value

    $new_array[$key] = isset($new_array[$key]) ? $new_array[$key] + $number : 0 + $number;

  }

}


print_r( $new_array );

// prints Array ( [0] => 32 [2] => 64 )

您的数组的代码示例:


$shippingPrice = array();


// loop through every item in nested foreach

foreach( $minmaxarray as $value ) {

  foreach( $value as $key => $number )  {

    // if the array key not exist, calculate with 0, otherwise calculate with the actual value

    $shippingPrice[$key] = isset($shippingPrice[$key]) ? $shippingPrice[$key] + $number : 0 + $number;

  }

}


echo '<pre>';

print_r( $shippingPrice );


查看完整回答
反对 回复 2022-10-14
?
繁花不似锦

TA贡献1851条经验 获得超4个赞

你可以试试这段代码


function array_flatten($array) { 

    if (!is_array($array)) { 

        return FALSE; 

    } 

    $result = array(); 

    foreach($array as $key=> $value){ 

        if (is_array($value)) { 

           $result = array_merge($result, array_flatten($value)); 

        } 

        else { 

          $result[$key] = $value; 

        } 

   } 

 return $result; 

您通过数组调用此函数,然后函数将返回您预期的数组。


array_flatten($array);



查看完整回答
反对 回复 2022-10-14
?
ITMISS

TA贡献1871条经验 获得超8个赞

您可以使用array_walk_recursive而不是 2foreach循环

array_walk_recursive($arr, function($v,$k) use (&$r){
  $r[$k] = isset($r[$k]) ? ($r[$k]+$v) : $v;
  });

工作演示:- https://3v4l.org/MMDEv


查看完整回答
反对 回复 2022-10-14
  • 3 回答
  • 0 关注
  • 79 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信