array('a1','b2','c3','d4','e5','x1','y1','z1');

比如以上数组

我想要这个数组元素中三个元素的不同组合,例如下

array('a1','b2','c3');

array('a1','b2','d4');

array('a1','b2','e5');

array('a1','b2','x1');

array('a1','b2','y1');

....

并最终返回这样一个数组

array(

array('a1','b2','c3'),

array('a1','b2','d4'),

array('a1','b2','e5'),

array('a1','b2','x1'),

array('a1','b2','y1'),

......

)

回复内容:

array('a1','b2','c3','d4','e5','x1','y1','z1');

比如以上数组

我想要这个数组元素中三个元素的不同组合,例如下

array('a1','b2','c3');

array('a1','b2','d4');

array('a1','b2','e5');

array('a1','b2','x1');

array('a1','b2','y1');

....

并最终返回这样一个数组

array(

array('a1','b2','c3'),

array('a1','b2','d4'),

array('a1','b2','e5'),

array('a1','b2','x1'),

array('a1','b2','y1'),

......

)

三层foreach解决

$data = array('a1','b2','c3','d4','e5','x1','y1','z1');

foreach ($data as $k_1 => $v_1) {

foreach ($data as $k_2 => $v_2) {

foreach ($data as $k_3 => $v_3) {

if ($v_1 !== $v_2 && $v_1 !== $v_3 && $v_2 !== $v_3) {

var_dump([$v_1,$v_2,$v_3]);

}

}

}

}

排列组合嘛,三个数的索引的话终归是有大小的,把他们从小到大排列,

设为a b c d,然后(这是数学题了)

谢谢邀请。数学没学好,你去看看手册里面的数据排序/合并函数用法

Array

(

[0] => abc

[1] => abd

[2] => acc

[3] => acd

[4] => adc

[5] => add

[6] => bbc

[7] => bbd

[8] => bcc

[9] => bcd

[10] => bdc

[11] => bdd

[12] => cbc

[13] => cbd

[14] => ccc

[15] => ccd

[16] => cdc

[17] => cdd

[18] => dbc

[19] => dbd

[20] => dcc

[21] => dcd

[22] => ddc

[23] => ddd

)

给你一个思路吧

array('a1','b1','c1')和array('c1','a1','b1')算重复吗?

相关标签:php

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

从小到大排列组合 php,求一个一维数组中,n个元素的不同组合,并返回该数组相关推荐

  1. 数组去重:将一数组中重复的元素去掉剩余部分保存到新数组中

    思路:将旧数组中不重复的元素选取出来放到新数组中,重复的元素只保留一个放到新数组中.首先,需要定义一个新数组用来把保存元素,使用for循环来对旧数组进行遍历.根据旧数组中的元素去查询新数组,利用if条 ...

  2. 找出现有Vector或ArrayList或数组中重复的元素给现有Vector或ArrayList或数组去重

    //直接上代码:public static void main(String[] args) {List<Integer> list = new Vector<Integer> ...

  3. js使用slice方法获取数组中某段元素

    js使用slice方法获取数组中某段元素 slice() 方法可从已有的数组中返回选定的元素. 语法:arrayObj.slice(start, [end]) 参数: start:必需.规定从何处开始 ...

  4. 删除数组中的某个元素的方法

    在 JavaScript 中,可以使用 splice() 方法删除数组中的某个元素.这个方法可以修改原数组,从指定的索引开始删除指定数目的元素,并且可选地插入新的元素.下面是一个使用 splice() ...

  5. 删除数组中重复的元素

    通过下标删除数组中某个元素 1 var strArr = str4.split(","); // 字符串转数组 2 strArr.sort(); // 重新排序,升降都可以 3 f ...

  6. 递归算法之排列组合-求一个集合S的m个元素的组合和所有可能的组合情况

    求一个集合S的m个元素组合的所有情况,并打印出来,非常适合采用递归的思路进行求解.因为集合的公式,本身就是递归推导的: C(n,m) = C(n-1,m-1) + C(n-1,m). 根据该公式,每次 ...

  7. Java黑皮书课后题第7章:7.10(找出最小元素的下标)使用下面的方法头编写一个方法,求出一个整数数组中的最小元素下标。编写测试程序,提示用户输入10个数字,调用这个方法返回最小值的下标(多个则最小

    7.10(找出最小元素的下标)使用下面的方法头编写一个方法,求出一个整数数组中的最小元素下标.编写测试程序,提示用户输入10个数字,调用这个方法返回最小值的下标(多个则返回最小的下标) 题目 题目描述 ...

  8. Java黑皮书课后题第7章:7.9(找出最小元素)使用下面的方法头编写一个方法,求出一个整数数组中的最小元素。编写测试程序,提示用户输入10个数字,调用这个方法返回最小值,并显示这个最小值

    7.9(找出最小元素)使用下面的方法头编写一个方法,求出一个整数数组中的最小元素.编写测试程序,提示用户输入10个数字,调用这个方法返回最小值,并显示这个最小值 题目 题目描述与运行示例 破题 代码 ...

  9. C语言每日一练——第10天:求一个矩阵主对角线及副对角线元素之和

    C语言每日一练 2021年9月18日 题目描述 求一个矩阵主对角线及副对角线元素之和 分析 在数学中,矩阵(Matrix)是一个按照长方阵列排列的复数或实数集合,矩阵是高等代数学中的常见工具,也常见于 ...

  10. 动态规划系列---求数组中两个元素差的最大值

    题目 求数组中两个元素差的最大值(后面的元素减去前面的元素):对应实际生活中的股票买卖,找出一只股票走势里面可能的最大收益: 思路 类似于求数组连续和的最大值:  保存最大差值和最小值,遍历数组,如果 ...

最新文章

  1. 怎么样MyEclipse配置Tomcat?
  2. Java基础之多线程详细分析
  3. bash-高级编程--位置变量
  4. C/C++学习之路_七: 内存管理
  5. 本地连不上远程mysql数据库(2)
  6. 3蛋白wb_老司机手把手教你选WB内参
  7. 调色插件怎么安装_修图调色一键搞定!PS大师级调色插件NikCollection 八合一送你...
  8. 基础编程题目集 7-3 逆序的三位数 (10 分)
  9. androidentity什么用_Android multipartentity的用法
  10. 如何将mysql中的表传到elipse中_eclipse怎么连接到MySQL中的表!!!!!
  11. 完成中国福利彩票快三的程序设计
  12. 世界各国国家代码简称 - 备用
  13. 中文文本标注工具调研以及BRAT安装使用
  14. 华为路由器IPv6 over IPv4 GRE隧道配置详解
  15. LTE物理层概述(7)-- LTE之Turbo编码及其matlab仿真1
  16. 北大计算机系女神每天必看必学的IT公众号
  17. 为什么说java是一个纯粹的面向对象的语言?面向对象语言和面向对象编程
  18. 还不会用Vue写出的excel表实现pdf导出吗?来,豪豪手把手教你
  19. 二维码第三方支付介绍
  20. SyntaxError: Missing parentheses in call to ‘print‘. 正解

热门文章

  1. 为了有利于保护安全性,IE已限制此网页运行可以访问计算机的脚本或 ActiveX 控件。请单击这里获取选项......
  2. 浅谈 System.Linq.Enumerable.AsEnumerable 方法
  3. 高性能 Windows Socket 服务端与客户端组件(HP-Socket v1.0.1 源代码及测试用例下载)...
  4. Python使用matplotlib可视化模拟正弦余弦折线图
  5. 计算机grand,The Grand
  6. PHP获取每个订单下订单商品的数量
  7. iis服务器网站指向ip地址,IIS之Web服务器 一个IP地址对应多个Web站点 多个域名...
  8. Windows开发签名工具(SignTool)下载
  9. 传统武术家为什么看起来厉害?谈实战的重要性
  10. LINUX右键打开方式,如何同时存在多种应用?