> 백엔드 개발 > PHP 튜토리얼 > 지정된 조건에 따라 2차원 배열을 하나의 배열로 병합하는 방법

지정된 조건에 따라 2차원 배열을 하나의 배열로 병합하는 방법

WBOY
풀어 주다: 2016-09-09 08:28:00
원래의
1108명이 탐색했습니다.

데이터를 배열로 병합합니다. 속성이 동일하면 수량과 제품 ID가 증가합니다. 속성이 다른 제품은 병합되지 않습니다.

다음과 같은 두 개의 배열이 있는데 조건에 따라 하나의 배열로 병합하는 방법을 알아보세요.

<code>$item_1 = array(
[0]=> array(
                'goods_id'=>1,
                'price'=>1,
                'goods_name'=>'商品1',
                'goods_attr_id'=>'1',
                'num'=>1,
        ),
        [1]=> array(
        
                'goods_id'=>2,
                'price'=>10,
                'goods_name'=>'测试商品2',
                'goods_attr_id'=>'3',
                'num'=>2,
        
        ),
        [2]=> array(
        
                'goods_id'=>3,
                'price'=>20,
                'goods_name'=>'测试商品3',
                'goods_attr_id'=>'4',
                'num'=>3,
        
        ),

);

$item_2 = array(

        [0]=> array(
        
                'goods_id'=>1,
                'price'=>1,
                'goods_name'=>'商品1',
                'goods_attr_id'=>'1,2',
                'num'=>1,
        
        ),
        [1]=> array(
        
                'goods_id'=>2,
                'price'=>10,
                'goods_name'=>'测试商品2',
                'goods_attr_id'=>'3',
                'num'=>2,
        
        ),
        [2]=> array(
        
                'goods_id'=>4,
                'price'=>30,
                'goods_name'=>'测试商品4',
                'goods_attr_id'=>'5',
                'num'=>1,
        ),
);</code>
로그인 후 복사
로그인 후 복사

답글 내용:

데이터를 배열로 병합합니다. 속성이 동일하면 수량과 제품 ID가 증가합니다. 속성이 다른 제품은 병합되지 않습니다.

다음과 같은 두 개의 배열이 있는데 조건에 따라 하나의 배열로 병합하는 방법을 알아보세요.

<code>$item_1 = array(
[0]=> array(
                'goods_id'=>1,
                'price'=>1,
                'goods_name'=>'商品1',
                'goods_attr_id'=>'1',
                'num'=>1,
        ),
        [1]=> array(
        
                'goods_id'=>2,
                'price'=>10,
                'goods_name'=>'测试商品2',
                'goods_attr_id'=>'3',
                'num'=>2,
        
        ),
        [2]=> array(
        
                'goods_id'=>3,
                'price'=>20,
                'goods_name'=>'测试商品3',
                'goods_attr_id'=>'4',
                'num'=>3,
        
        ),

);

$item_2 = array(

        [0]=> array(
        
                'goods_id'=>1,
                'price'=>1,
                'goods_name'=>'商品1',
                'goods_attr_id'=>'1,2',
                'num'=>1,
        
        ),
        [1]=> array(
        
                'goods_id'=>2,
                'price'=>10,
                'goods_name'=>'测试商品2',
                'goods_attr_id'=>'3',
                'num'=>2,
        
        ),
        [2]=> array(
        
                'goods_id'=>4,
                'price'=>30,
                'goods_name'=>'测试商品4',
                'goods_attr_id'=>'5',
                'num'=>1,
        ),
);</code>
로그인 후 복사
로그인 후 복사

<code>foreach ($item_1 as $key => $value) {
    $arr[$value['goods_id'].'_'.$value['goods_attr_id']]=$value;

}

foreach ($item_2 as $key => $value) {
    if(empty($arr[$value['goods_id'].'_'.$value['goods_attr_id']])){
        $arr[$value['goods_id'].'_'.$value['goods_attr_id']]=$value;

    }else{
        $arr[$value['goods_id'].'_'.$value['goods_attr_id']]['num']=$arr[$value['goods_id'].'_'.$value['goods_attr_id']]['num']+$value['num'];
    }
        
}    
var_dump($arr);
</code>
로그인 후 복사

먼저 정렬하고 같은 것을 모아 놓은 다음 개수를 세세요.

EC처럼 보입니다. 먼저 Goods_id에 따라 그룹화한 다음 병합합니다. 구체적인 방법은 php 배열 함수를 검색하여 확인할 수 있습니다. . 사용

관련 라벨:
php
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿