基于键PHP的值之和

基于键PHP的值之和,php,arrays,Php,Arrays,我们在PHP中使用了和数组,如下所示,并且希望在新数组中创建一个新数组,其中应该有唯一的键,并且应该添加来自相同键的值 Array ( [0] => Array ( [58] => 32.00 ) ) Array ( [0] => Array ( [58] => 34.00 ) ) Array ( [0] => Array

我们在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);
数组
(
[0]=>阵列
(
[min]=>35.00
[最大值]=>50.00
[价格]=>26.00
)
[1] =>阵列
(
[min]=>50.00
[最大值]=>80.00
[价格]=>29.00
)
[2] =>阵列
(
[min]=>80.00
[最大值]=>100.00
[价格]=>32.00
)
[3] =>阵列
(
[min]=>100.00
[最大值]=>150.00
[价格]=>34.00
)
[4] =>阵列
(
[min]=>150.00
[最大值]=>180.99
[价格]=>36.00
)
) 
$shippingPrice=array();
foreach($minmaxarray作为$key=>$value){
如果($price>$value['min']和&$price<$value['max'])
{
如果($value['price']))
{
$shippingPrice[][$smethodid]=$value['price'];
打破
}
}
}
回声';打印(装运价格);
$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 );
阵列的代码示例:

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; 
} 
$shippingPrice=array();
//循环遍历嵌套foreach中的每个项
foreach($minmaxarray作为$value){
foreach($key=>$number形式的值){
//如果数组键不存在,则使用0计算,否则使用实际值计算
$shippingPrice[$key]=isset($shippingPrice[$key])?$shippingPrice[$key]+$number:0+$number;
}
}
回声';
$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 )
打印(装运价格);
您可以尝试此代码

array_walk_recursive($arr, function($v,$k) use (&$r){
  $r[$k] = isset($r[$k]) ? ($r[$k]+$v) : $v;
});
通过数组调用此函数,然后函数将返回预期的数组


您可以使用
array\u walk\u recursive
而不是2
foreach
loop


工作演示:-

到目前为止,您尝试了什么?我尝试通过foreach循环进行迭代,并获得所需的输出,但没有成功。您的最上面的示例看起来像是一个值为六个独立数组的打印,而不是一个值为六的数组,因此循环无法工作。如果你发布了你迄今为止尝试过的代码,人们会告诉你哪里出了问题!显示您的代码请代码为$shippingPrice=array();foreach($key=>$value的minmaxarray){if($price>$value['min']和&$price<$value['max']){if($value['price']){$shippingPrice[][$smethodid]=$value['price'];break;}}}}echo';打印(装运价格);请再说一遍我刚刚编辑的问题好吗。谢谢,我真的不明白你的更新。
minmaxarray
的作用是什么?请解释清楚一点。如果是您的输入,您的预期输出是什么?minmaxarray是我的输入,上面粘贴的minmaxarray的输出如果您问题中的第三个代码示例是您的
minmaxarray
的预期输出,那么您的输入数组是什么?请说明实际数组的内容是什么,以及您希望它是什么样子。我只想让myarray$shippingPrice看起来像您在上面的代码中创建的$shippingPrice数组。
$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 )