php多个数组组合算法 火车头免登录发布接口代码备忘
火车头发布产品的时候,有颜色、尺码、性别等等产品属性,需要进行不重复的组合,变成不重复的数组
<?php
function comb($a){
$a = array_filter($a);
$out = array();
if (count($a) == 1) {
$r = array_shift($a);
foreach ($r as $v) $out[] = array($v);
return $out;
}
foreach ($a as $k => $v){
$b = $a;
unset($b[$k]);
$r = comb($b);
foreach ($v as $v1){
foreach ($r As $v2)
$out[] = array_merge(array($v1), $v2);
}
break;
}
return $out;
} $array1 = array(array('Red', 'Black', 'Yellow'),array('Boy','Girl'),array('S', 'M', 'L'));
$result = comb($array1);
print_r($result);
?>
返回的结果如下:
Array
(
[0] => Array
(
[0] => Red
[1] => Boy
[2] => S
) [1] => Array
(
[0] => Red
[1] => Boy
[2] => M
) [2] => Array
(
[0] => Red
[1] => Boy
[2] => L
) [3] => Array
(
[0] => Red
[1] => Girl
[2] => S
) [4] => Array
(
[0] => Red
[1] => Girl
[2] => M
) [5] => Array
(
[0] => Red
[1] => Girl
[2] => L
) [6] => Array
(
[0] => Black
[1] => Boy
[2] => S
) [7] => Array
(
[0] => Black
[1] => Boy
[2] => M
) [8] => Array
(
[0] => Black
[1] => Boy
[2] => L
) [9] => Array
(
[0] => Black
[1] => Girl
[2] => S
) [10] => Array
(
[0] => Black
[1] => Girl
[2] => M
) [11] => Array
(
[0] => Black
[1] => Girl
[2] => L
) [12] => Array
(
[0] => Yellow
[1] => Boy
[2] => S
) [13] => Array
(
[0] => Yellow
[1] => Boy
[2] => M
) [14] => Array
(
[0] => Yellow
[1] => Boy
[2] => L
) [15] => Array
(
[0] => Yellow
[1] => Girl
[2] => S
) [16] => Array
(
[0] => Yellow
[1] => Girl
[2] => M
) [17] => Array
(
[0] => Yellow
[1] => Girl
[2] => L
) )
php多个数组组合算法 火车头免登录发布接口代码备忘的更多相关文章
- 火车采集器 帝国CMS7.2免登录发布模块
帝国cms7.2增加了金刚模式,登录发布有难度.免登录发布模块配合火车采集器,完美解决你遇到的问题. 免登录直接获取栏目列表 通过文件内设置密码免登录发布数据 帝国cms7.2免登陆文章发布接口使用说 ...
- 排列组合算法(PHP)
用php实现的排列组合算法.使用递归算法,效率低,胜在简单易懂.可对付元素不多的情况. //从$input数组中取$m个数的组合算法 function comb($input, $m) { if($m ...
- 帝国cms7.5免登陆发布模块
帝国cms7.5免登陆发布文章. 帝国cms增加了金刚模式,登录发布文章有难度.免登录发布模块配合火车采集器,完美解决你遇到的问题. 1.必备工具: 1.火车采集器 2.免登陆发布接口 3.帝国cms ...
- 基于C#程序设计语言的三种组合算法
目录 基于C#程序设计语言的三种组合算法 1. 总体思路 1.1 前言 1.2 算法思路 1.3 算法需要注意的点 2. 三种组合算法 2.1 普通组合算法 2.2 与自身进行组合的组合算法 2.3 ...
- JAVA-- M选N的组合算法
M选N的组合算法 只要每个数字出现一次就可以 举例 :也就是说123与321和213属于重复 只算一组 此算法已经排除了重复数据 应用--彩票的注数算法 本程序的思路是开一个数组b,其长度 ...
- Lua版组合算法
高效率的排列组合算法--<编程珠矶>--Lua实现 原文链接 原文是python实现的,这里给出lua版本的实现 组合算法 本程序的思路是开一个数组,其下标表示1到m个数,数组元素 ...
- python实现高效率的排列组合算法-乾颐堂
组合算法 本程序的思路是开一个数组,其下标表示1到m个数,数组元素的值为1表示其下标 代表的数被选中,为0则没选中. 首先初始化,将数组前n个元素置1,表示第一个组合为前n个数. 然后从左到右扫描数组 ...
- Adaboost\GBDT\GBRT\组合算法
Adaboost\GBDT\GBRT\组合算法(龙心尘老师上课笔记) 一.Bagging (并行bootstrap)& Boosting(串行) 随机森林实际上是bagging的思路,而GBD ...
- n全排列输出和 n个数的组合(数字范围a~b)
n全排列输出: int WPermutation(int num, bool bRepeat) num表示num全排列 bRepeat标志是否产生重复元素的序列. int Permutation(in ...
随机推荐
- python(29)Tinker+BeautifulSoup+Request抓取美女壁纸
原文链接:http://www.limerence2017.com/2019/10/22/python29/ 抓取准备 今天是10月24日,祝所有程序员节日快乐.今天打算写个爬虫抓取3DMGAME论坛 ...
- C# 线程安全集合类
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/kang_xuan/article/de ...
- Linux (Ubuntu 18.04) 安装vim编辑器
大家可以去Ubuntu官网下载桌面系统:https://ubuntu.com/download/desktop,虽然最新版是19.04,但是建议大家下载稳定版18.04.安装过程非常简洁,我使用的是V ...
- Android开发 互相调用模式之导出Jar包、扩展MainActivity、Java主导
首先讲导出Jar包,在以前都是用这种方法,但是现在官方不推荐使用此方法,官方推荐导出Aar包 (1)首先创建一个Android空工程 注意:这里选择API 16,因为Unity支持的最低是API 16 ...
- 应用安全 - 工具 - Jmeter - 漏洞 - 汇总
CVE-2018-1297 Date 类型 rmi 反序列化导致远程代码执行 影响范围
- eclipse的debug
打了断点,发起请求,eclipse有响应,但是断点行没有绿色也就是没有进入.提示source not found.此时应该将工程添加入路径,add->project->要调试的工程.res ...
- Vim命令使用
终端输入vim命令(不区分大小写)进入Vim,起始默认进去是normal模式(即普通模式),使用:q可以退出Vim,使用i(insert)进入编辑模式,开始输入文字,使用Esc键又可以回到normal ...
- 最短meeting路线(树的直径)--牛客第四场(meeting)
题意: 给你一棵树,树上有些点是有人的,问你选一个点,最短的(最远的那个人的距离)是多少. 思路: 其实就是树的直径,两遍dfs,dfs第二遍的时候遇到人就更新直径就行了,ans是/2,奇数的话+1. ...
- redis的string和list
- 第二章 单表查询 T-SQL语言基础(1)
单表查询(1) 本章:逻辑查询处理,特定的SELECT查询生成正确的结果集而要经历的一系列逻辑阶段;单表查询的其他方面,包括:运算符,空值(NULL),字符的处理和临时数据,分级(ranking),C ...