PHP 배열의 중복 데이터 처리

WBOY
풀어 주다: 2016-10-17 09:30:14
원래의
1109명이 탐색했습니다.

<code>array(4) {
  [0] => array(7) {
    ["goodsId"] => string(2) "15"
    ["goodsNo"] => string(13) "9311770592581"
    ["goodsName"] => string(37) "DCS超级水润泡沫洗面/洁面乳"
    ["price"] => string(5) "40.00"
    ["currency"] => string(2) "15"
    ["quantity"] => int(1)
    ["goods_tax_price"] => string(1) "0"
  }
  [1] => array(7) {
    ["goodsId"] => string(2) "16"
    ["goodsNo"] => string(13) "9327693000805"
    ["goodsName"] => string(21) "DCS超级营养精华"
    ["price"] => string(5) "10.00"
    ["currency"] => string(2) "15"
    ["quantity"] => string(1) "1"
    ["goods_tax_price"] => string(1) "0"
  }
  [2] => array(7) {
    ["goodsId"] => string(2) "17"
    ["goodsNo"] => string(13) "9327693000744"
    ["goodsName"] => string(18) "DCS超级营养水"
    ["price"] => string(5) "30.00"
    ["currency"] => string(2) "15"
    ["quantity"] => string(1) "1"
    ["goods_tax_price"] => string(1) "0"
  }
  [3] => array(7) {
    ["goodsId"] => string(2) "18"
    ["goodsNo"] => string(13) "9311770592505"
    ["goodsName"] => string(27) "DCS集中美白活力面膜"
    ["price"] => string(5) "40.00"
    ["currency"] => string(2) "15"
    ["quantity"] => string(1) "1"
    ["goods_tax_price"] => string(1) "0"
  }
[4] => array(7) {
    ["goodsId"] => string(2) "18"
    ["goodsNo"] => string(13) "9311770592505"
    ["goodsName"] => string(27) "DCS集中美白活力面膜"
    ["price"] => string(5) "40.00"
    ["currency"] => string(2) "15"
    ["quantity"] => string(1) "2"
    ["goods_tax_price"] => string(1) "0"
  }
}</code>
로그인 후 복사
로그인 후 복사

배열에 반복되는 상품ID가 있는 상품정보를 하나로 합치고, 그 숫자가 수량의 합(같은 상품의 합)이 됩니다

결과는 다음과 같습니다.

<code>array(4) {
  [0] => array(7) {
    ["goodsId"] => string(2) "15"
    ["goodsNo"] => string(13) "9311770592581"
    ["goodsName"] => string(37) "DCS超级水润泡沫洗面/洁面乳"
    ["price"] => string(5) "40.00"
    ["currency"] => string(2) "15"
    ["quantity"] => int(1)
    ["goods_tax_price"] => string(1) "0"
  }
  [1] => array(7) {
    ["goodsId"] => string(2) "16"
    ["goodsNo"] => string(13) "9327693000805"
    ["goodsName"] => string(21) "DCS超级营养精华"
    ["price"] => string(5) "10.00"
    ["currency"] => string(2) "15"
    ["quantity"] => string(1) "1"
    ["goods_tax_price"] => string(1) "0"
  }
  [2] => array(7) {
    ["goodsId"] => string(2) "17"
    ["goodsNo"] => string(13) "9327693000744"
    ["goodsName"] => string(18) "DCS超级营养水"
    ["price"] => string(5) "30.00"
    ["currency"] => string(2) "15"
    ["quantity"] => string(1) "1"
    ["goods_tax_price"] => string(1) "0"
  }
  [3] => array(7) {
    ["goodsId"] => string(2) "18"
    ["goodsNo"] => string(13) "9311770592505"
    ["goodsName"] => string(27) "DCS集中美白活力面膜"
    ["price"] => string(5) "40.00"
    ["currency"] => string(2) "15"
    ["quantity"] => string(1) "3"
    ["goods_tax_price"] => string(1) "0"
  }

}</code>
로그인 후 복사
로그인 후 복사

답글 내용:

<code>array(4) {
  [0] => array(7) {
    ["goodsId"] => string(2) "15"
    ["goodsNo"] => string(13) "9311770592581"
    ["goodsName"] => string(37) "DCS超级水润泡沫洗面/洁面乳"
    ["price"] => string(5) "40.00"
    ["currency"] => string(2) "15"
    ["quantity"] => int(1)
    ["goods_tax_price"] => string(1) "0"
  }
  [1] => array(7) {
    ["goodsId"] => string(2) "16"
    ["goodsNo"] => string(13) "9327693000805"
    ["goodsName"] => string(21) "DCS超级营养精华"
    ["price"] => string(5) "10.00"
    ["currency"] => string(2) "15"
    ["quantity"] => string(1) "1"
    ["goods_tax_price"] => string(1) "0"
  }
  [2] => array(7) {
    ["goodsId"] => string(2) "17"
    ["goodsNo"] => string(13) "9327693000744"
    ["goodsName"] => string(18) "DCS超级营养水"
    ["price"] => string(5) "30.00"
    ["currency"] => string(2) "15"
    ["quantity"] => string(1) "1"
    ["goods_tax_price"] => string(1) "0"
  }
  [3] => array(7) {
    ["goodsId"] => string(2) "18"
    ["goodsNo"] => string(13) "9311770592505"
    ["goodsName"] => string(27) "DCS集中美白活力面膜"
    ["price"] => string(5) "40.00"
    ["currency"] => string(2) "15"
    ["quantity"] => string(1) "1"
    ["goods_tax_price"] => string(1) "0"
  }
[4] => array(7) {
    ["goodsId"] => string(2) "18"
    ["goodsNo"] => string(13) "9311770592505"
    ["goodsName"] => string(27) "DCS集中美白活力面膜"
    ["price"] => string(5) "40.00"
    ["currency"] => string(2) "15"
    ["quantity"] => string(1) "2"
    ["goods_tax_price"] => string(1) "0"
  }
}</code>
로그인 후 복사
로그인 후 복사

배열에 반복되는 상품ID가 있는 상품정보를 하나로 합치고, 그 숫자가 수량의 합(같은 상품의 합)이 됩니다

결과는 다음과 같습니다.

<code>array(4) {
  [0] => array(7) {
    ["goodsId"] => string(2) "15"
    ["goodsNo"] => string(13) "9311770592581"
    ["goodsName"] => string(37) "DCS超级水润泡沫洗面/洁面乳"
    ["price"] => string(5) "40.00"
    ["currency"] => string(2) "15"
    ["quantity"] => int(1)
    ["goods_tax_price"] => string(1) "0"
  }
  [1] => array(7) {
    ["goodsId"] => string(2) "16"
    ["goodsNo"] => string(13) "9327693000805"
    ["goodsName"] => string(21) "DCS超级营养精华"
    ["price"] => string(5) "10.00"
    ["currency"] => string(2) "15"
    ["quantity"] => string(1) "1"
    ["goods_tax_price"] => string(1) "0"
  }
  [2] => array(7) {
    ["goodsId"] => string(2) "17"
    ["goodsNo"] => string(13) "9327693000744"
    ["goodsName"] => string(18) "DCS超级营养水"
    ["price"] => string(5) "30.00"
    ["currency"] => string(2) "15"
    ["quantity"] => string(1) "1"
    ["goods_tax_price"] => string(1) "0"
  }
  [3] => array(7) {
    ["goodsId"] => string(2) "18"
    ["goodsNo"] => string(13) "9311770592505"
    ["goodsName"] => string(27) "DCS集中美白活力面膜"
    ["price"] => string(5) "40.00"
    ["currency"] => string(2) "15"
    ["quantity"] => string(1) "3"
    ["goods_tax_price"] => string(1) "0"
  }

}</code>
로그인 후 복사
로그인 후 복사

더 이상 고민하지 않고 바로 코드를 살펴보겠습니다.

<code>$arr = array(
  '0' => array(
    'id' => 1,
    'count' =>1,
    ),
  '1' => array(
    'id' => 2,
    'count' =>1,
    ),
  '2' => array(
    'id' => 4,
    'count' =>1,
    ),
  '3' => array(
    'id' => 2,
    'count' =>1,
    ),
  );
$new = $news = $newss = array();
foreach ($arr as $key => $value) {
  
  if(!in_array($value['id'], $new)) {
    $new[] = $value['id'];  //$new保存不重复的id值
    $news[$key] = $value;   //$news保存不重复id的数组值
    $newss[$value['id']] = $key;  //$newss保存不重复的id的键值
  }else {
    $k = $newss[$value['id']];  //取出重复的id保存的第一个键值
    $count = (int)$news[$k]['count'];  //取出第一个相同id保存的count值
    $news[$k]['count'] = $count+1;     //赋值到新的数组
  }
}

var_dump($news);</code>
로그인 후 복사

PHP 배열의 중복 데이터 처리



2차원 배열 중복 제거, 결과를 원하는지 확인하세요: http://zhidao.baidu.com/link?...

이러한 데이터는 데이터베이스에서 검색됩니까? 그렇다면 SQL 쿼리를 사용하여 중복을 제거할 수 있습니다. 나중에 병합하면 반복자 클래스의 PHP 버전을 찾을 수 있지만 이는 다음과 같습니다. 항상 그렇습니다. 배열을 순회하는 것은 불가피합니다.

2차원 배열 중복 제거 문제인가요? 그렇다면 이전 코드를 찾아보고 그런 함수를 한번 작성해 봤습니다.

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