php 给多维数组加样式,PHP:合并/添加多维数组?

假设我有几个具有相同结构的多维数组,如下所示:

$basketA['fruit']['apple'] = 1;

$basketA['fruit']['orange'] = 2;

$basketA['fruit']['banana'] = 3;

$basketA['drink']['soda'] = 4;

$basketA['drink']['milk'] = 5;

$basketB['fruit']['apple'] = 2;

$basketB['fruit']['orange'] = 2;

$basketB['fruit']['banana'] = 2;

$basketB['drink']['soda'] = 2;

$basketB['drink']['milk'] = 2

我需要一种方法来合并它们,所以我会得到这个:

$basketC['fruit']['apple'] = 3;

$basketC['fruit']['orange'] = 4;

$basketC['fruit']['banana'] = 5;

$basketC['drink']['soda'] = 6;

$basketC['drink']['milk'] = 7;

真正的多维数组会更复杂,这只是为了帮助解释我需要的东西.

谢谢!!!!

解决方法:

使用PHP的标准方法是不可能的,你应该编写自己的函数:

function readArray( $arr, $k, $default = 0 ) {

return isset( $arr[$k] ) ? $arr[$k] : $default ;

}

function merge( $arr1, $arr2 ) {

$result = array() ;

foreach( $arr1 as $k => $v ) {

if( is_numeric( $v ) ) {

$result[$k] = (int)$v + (int) readArray( $arr2, $k ) ;

} else {

$result[$k] = merge( $v, readArray($arr2, $k, array()) ) ;

}

}

return $result ;

}

测试

$basketA = array( "fruit" => array(), "drink" => array() ) ;

$basketA['fruit']['apple'] = 1;

$basketA['fruit']['orange'] = 2;

$basketA['fruit']['banana'] = 3;

$basketA['drink']['soda'] = 4;

$basketA['drink']['milk'] = 5;

$basketB = array( "fruit" => array(), "drink" => array() ) ;

$basketB['fruit']['apple'] = 2;

$basketB['fruit']['orange'] = 2;

$basketB['fruit']['banana'] = 2;

$basketB['drink']['soda'] = 2;

$basketB['drink']['milk'] = 2;

$basketC = merge( $basketA, $basketB ) ;

print_r( $basketC ) ;

产量

Array

(

[fruit] => Array

(

[apple] => 3

[orange] => 4

[banana] => 5

)

[drink] => Array

(

[soda] => 6

[milk] => 7

)

)

标签:php,arrays,merge

来源: https://codeday.me/bug/20190827/1741847.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值