PHP 数组遍历 (foreach)

PHP 神奇De数组

  • php数组根据某一个键值,把相同键值的合并生成一个新的二维数组

$infos = array(
        array(
                'a' => 36,
                'b' => 'gh',
                'd' => '2015/08/42e3.png'
        )array(
                'a' => 6,
                'b' => 'jk',
                'd' => '2015/08/43848.png'
        ),
        array(
                'a' => 36,
                'b' => 'db',
                'd' => '2015/08/5465.png'
        ),
        array(
                'a' => 6,
                'b' => 'aw',
                'd' => '2015/08/b3219929.png'
        )
     
);

处理要求:将数组中某个相同键值的二维数组合并到一个数组中,生成一个新的数组

$result= array();
    foreach ($infos as $key => $info) {
        $result[$info['a']][] = $info;
    }
    print_r($result);
  

  • php数组根据两个或多个字段(值相同)的二维数组合并求和

$arr = Array
(
    '0' => Array
        (
            's_id' => 79,
            'num' => 1,
            'date' => '2018-09-21'
        ),
    '1' => Array
        (
            's_id' => 80,
            'num' => 2,
            'date' => '2018-09-21'
        ),
    '2' => Array
        (
            's_id' =>80,
            'num' => 1,
            'date' => '2018-09-21'
        ),
    '3' => Array
        (
            's_id' => 82,
            'num' => 1,
            'date' => '2018-09-22'
        )
);

处理要求:将数组中相同字段下值合并求和,生成一个新的数组

foreach($arr as $v){
    if(!isset($ret[$v['s_id'].'_'.$v['date']])){
        $ret[$v['s_id'].'_'.$v['date']] = $v;
    }else{
        $ret[$v['s_id'].'_'.$v['date']]['num'] += $v['num'];
    }
}

print_r(array_values($ret));

效果如下

Array
(
    [0] => Array
        (
            [s_id] => 79
            [num] => 1
            [date] =>2018-09-21
        )

    [1] => Array    *Look at this*
        (
            [s_id] => 80
            [num] => 3   
            [date] =>2018-09-21
        )

    [2] => Array
        (
            [s_id] => 82
            [num] => 1
            [date] => 2018-09-22
        )

)


  • php数组根据键值相同合成一个新的数组

Array
(
    [0] => Array
        (
            [0] => 1
            [1] => 2
        )

    [1] => Array
        (
            [0] => a
            [1] => b
        )
)

处理要求:将数组中相同的键取出,生成一个新的数组

$arrNew=[];
$key=array_keys($arr);
foreach ($arr as $val){
    foreach ($key as $k=>$v){
        $arrNew[$k][]=$val[$v];
    }
}
print_r($arrNew);

效果如下

Array
(
    [0] => Array
        (
            [0] => 1
            [1] => a
        )
    [1] => Array
        (
            [0] => 2
            [1] => b
        )
)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值