PHP找出专题下重复的商品数据
- 一、前言
- 1、问题描述
- 2、基本思路
- 二、代码
- 三、打印
一、前言
1、问题描述
已知
:二维数组的数据:id 主键ID;special_id 专题ID;goods_id 专题关联的商品ID求
:每个专题里重复商品的主键ID
2、基本思路
- 1、把数据处理成专题ID为键,里面包含单个专题的所有商品。
- 2、循环处理后的数据,循环商品数据,找出重复商品数据的主键ID
二、代码
//PHP找出专题下重复的商品数据
public function test() {//待处理的数据:id 主键ID;special_id 专题ID;goods_id 专题关联的商品ID$data = [['id' => 1, 'special_id' => 1, 'goods_id' => 1],['id' => 2, 'special_id' => 1, 'goods_id' => 2],['id' => 3, 'special_id' => 1, 'goods_id' => 3],['id' => 4, 'special_id' => 1, 'goods_id' => 1],['id' => 5, 'special_id' => 2, 'goods_id' => 2],['id' => 6, 'special_id' => 2, 'goods_id' => 3],['id' => 7, 'special_id' => 2, 'goods_id' => 4],['id' => 8, 'special_id' => 2, 'goods_id' => 3],['id' => 9, 'special_id' => 3, 'goods_id' => 5],['id' => 10, 'special_id' => 3, 'goods_id' => 5],['id' => 11, 'special_id' => 3, 'goods_id' => 5],['id' => 12, 'special_id' => 3, 'goods_id' => 5],['id' => 13, 'special_id' => 4, 'goods_id' => 1],['id' => 14, 'special_id' => 4, 'goods_id' => 2],['id' => 15, 'special_id' => 4, 'goods_id' => 3]];//把数据按special_id分组,处理成以special_id为键,里面是关联的商品数据(二维数组)$deleteId = $specialList = [];foreach ($data as $value) {$specialList[$value['special_id']][] = $value;}//循环每一个专题下的商品数据,查找出有重复商品的主键IDforeach ($specialList as $specialId => $value) {$goodsIds = []; //单个专题下的商品ID(一维数组)foreach ($value as $goodsInfo) { //循环单个专题下的所有商品$goodsId = $goodsInfo['goods_id'];if (in_array($goodsId, $goodsIds)) { //如果商品ID已存在,则说明重复了$deleteId[] = $goodsInfo['id']; //删除的主键ID追加continue; //跳出本次循环,直接执行下一次循环}$goodsIds[] = $goodsId; //单个专题下的商品ID追加}}if ($deleteId) {exit("重复数据的ID为 [" . implode(',', $deleteId) . "]");}else{exit("专题下无重复的商品数据");}
}
三、打印
重复数据的ID为 [4,8,10,11,12]
PHP找出专题下重复的商品数据相关推荐
- 找出数组中重复的数字---多思路
问题:找出数组中重复的数字. 在一个长度为 n 的数组 nums 里的所有数字都在 0-n-1 的范围内.数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次.请找出数组中任意 ...
- 找出重复的数java_剑指offer:1.找出数组中重复的数(java版)
数组中重复的数: 题目:找出数组中重复的数, 题目描述: 在一个长度为n的数组里的所有数字都在0到n-1的范围内. 数组中某些数字是重复的,但不知道有几个数字是重复的. 也不知道每个数字重复几次.请找 ...
- java如何找重复数字_Java如何找出数组中重复的数字
题目描述:找出数组中重复的数字,具体内容如下 在一个长度为n的数组里的所有数字都在 0~n-1的范围内.数组中某些数字是重复的,但不知道有几个数字是重复的,也不知道每个数字重复了几次.请找出数组中任意 ...
- 图解面试题:找出数组中重复的数字?
今天分享的题目来源于 LeetCode 上的剑指 Offer 系列 面试题03. 数组中重复的数字. 题目链接:https://leetcode-cn.com/problems/shu-zu-zhon ...
- 在linux中查找重复的文件夹,如何在Linux上找出并删除重复的文件:FSlint
大家好,今天我们会学习如何在Linux PC或者服务器上找出和删除重复文件.这里有一款工具你可以工具自己的需要使用. 无论你是否正在使用Linux桌面或者服务器,有一些很好的工具能够帮你扫描系统中的重 ...
- 在一段英文字母中找出每个字母重复数量的方法(Java)
首先需要了解下java的hashmap数据类型: hashmap是基于哈希表的Map接口的实现.hashmap有两个元素,一个是key(键名),一个是value(键值),就相当于一个字典了,和Pyth ...
- 01、找出数组中重复的数字
1.找出数组中重复的数字 题目:在一个长度为n的数组里的所有数字都在0到n-1的范围内. 数组中某些数字是重复的,但不知道有几个数字是重复的.也不知道每个数字重复几次.请找出数组中任意一个重复的数字. ...
- 剑指offer 面试题三 找出数组中重复的数字
1 import org.junit.Test; 2 3 import java.util.Arrays; 4 import java.util.HashSet; 5 6 public class D ...
- 13. 找出数组中重复的数字【难度: 简单 / 知识点: 模拟】
13. 找出数组中重复的数字[难度: 简单 / 知识点: 模拟] 方法一: map 计数 时间复杂度O(nlongn) 空间复杂度多了一个二叉树 class Solution {public:int ...
- Javascript找出所有没有重复的字符(优化)
<!DOCTYPE html> <html><head><meta charset="utf-8"><title>< ...
最新文章
- android layout属性介绍
- Beanutils.copyProperties复制参数不为null的属性
- hibernate 多对一(Many-to-one)单向关联
- Java基础课程---权限修饰符
- GitHub Pages和每个项目绑定自定义域名(支持多个和顶级域名)
- pythonATM自动存取款机7天密码保护
- AFNetworking 3.0迁移指南
- 爱因斯坦诞辰140周年:带你走近一个真实的爱神
- JAVA的数据类型有哪些?
- 需求分析——使用类图建模
- Kotlin学习总结(1)——Kotlin快速入门
- 网安入门须知:Python基础导读
- 23种设计模式(二)组件协作之模板方法
- mssql 数据库“查询处理器用尽了内部资源,无法生成查询计划。”问题的处理...
- mysql join与where_mysql中left join设置条件在on与where时的用法区别分析
- 【python】打造一款自动扫描全网漏洞的扫描器
- 解析Linux商业应用现状
- 数据库课程设计——学生宿舍信息管理系统
- kcl计算机科学与技术研究生,KCL的Data Science「伦敦大学国王学院数据科学理学硕士」...
- 将参数量化为二进制补码定点数的形式
热门文章
- win8虚拟机_VMware15虚拟机软件安装包+安装教程
- 中科院30m二级分类土地利用数据Arcgis预处理及获取
- STL--vector、pair
- win iis mysql php_Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境搭建教程
- 初中计算机教案ps,第三课 利用Adobe Photoshop工具处理图片
- linux android交叉编译,【转】搭建arm-linux-gcc交叉编译工具链环境(Android原生(JNI)开发环境搭建)...
- bat文件语法和技巧_这不是高手专利,一秒新建100个Excel文件
- git tag 使用方法(打标签、发布及回滚)
- 冰雪、飞禽勾勒出青海湖冬日“水墨画”
- 001_动力节点_SpringMVC4_SpringMVC简介