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 ...
随机推荐
- Python3命名规范
1.模块 模块尽量使用小写命名,首字母保持小写,尽量不要用下划线(除非多个单词,且数量不多的情况) # 正确的模块名 import decoder import html_parser # 不推荐的模 ...
- C# Timespan Tostring 时分秒格式
timeSpan.ToString(@"hh\:mm\:ss");
- Linux进程间通信(IPC)之信号量
[Linux]进程间通信(IPC)之信号量详解与测试用例 2017年03月22日 17:28:50 阅读数:2255 学习环境centos6.5 Linux内核2.6 进程间通信概述 1. 进程通信机 ...
- ubuntu go 开发环境搭建
访问:https://golang.org/dl/ 下载 go1.12.4.linux-amd64.tar.gz wget https://dl.google.com/go/go1.12.4.linu ...
- springboot和springcloud版本冲突问题
最近搭建eureka项目,出现boot和cloud版本不匹配错误,记录下来 2019-12-06 14:00:20.043 ERROR 180780 --- [ main] o.s.boot.Spri ...
- Matlab中的eig函数和Opecv中eigen()函数的区别
奇异值分解的理论参见下面的链接 http://www.cnblogs.com/pinard/p/6251584.html https://blog.csdn.net/shenziheng1/artic ...
- Tensorflow 保存和载入训练过程
本节涉及点: 保存训练过程 载入保存的训练过程并继续训练 通过命令行参数控制是否强制重新开始训练 训练过程中的手动保存 保存训练过程前,程序征得同意 一.保存训练过程 以下方代码为例: import ...
- Python爬虫学习==>第七章:urllib库的基本使用方法
学习目的: urllib提供了url解析函数,所以需要学习正式步骤 Step1:什么是urllib urllib库是Python自带模块,是Python内置的HTTP请求库 包含4个模块: >& ...
- 渗透测试 - KALI Linux 学习 - kali linux如何启动METASPLOIT服务
kali 2.0 已经没有metasploit 这个服务了,所以service metasploit start 的方式不起作用. 在kali 2.0中启动带数据库支持的MSF方式如下: #1 首先 ...
- elk 概念整理 集群状态 - yellow - 面试的问题 -- 官方配置文档 水平扩容以及数据保障
1. primary shard -- raid0 2.replicas shard -- raid1 3.index -- 图书馆的借书指引 4.MySQL vs elasticsearch # ...