多维数组的排列--待研究-----

 1 <?php
 2 function arrange($arr, $i, $res)
 3 {
 4     if (is_array($arr)) {
 5         if (is_array($arr[$i])) {
 6             foreach ($arr[$i] as $k => $v) {
 7                 if(is_array($v)){
 8                     foreach($v as $k1=>$v1){
 9                         if(is_array($v1)){
10                             //这边怎么写????再不能耽误时间了,,,,,,不会写了
11                         }else{
12                             $res[$i] = $v1;
13                             //如果数组排列到底层则输出
14                             if ($i + 1 >= count($arr)) {
15                                 $a = implode("", $res);
16                                 echo $a . "\n";
17                             } else {
18                                 arrange($arr, $i + 1, $res);
19                             }
20                         }
21                     }
22                 }else{
23                     $res[$i] = $v;
24                     //如果数组排列到底层则输出
25                     if ($i + 1 >= count($arr)) {
26                         $a = implode("", $res);
27                         echo $a . "\n";
28                     } else {
29                         arrange($arr, $i + 1, $res);
30                     }
31                 }
32             }
33         } else {
34             $res[$i] = $arr[$i];
35             if ($i + 1 >= count($arr)) {
36                 $a = implode("", $res);
37                 echo $a . "\n";
38             } else {
39                 arrange($arr, $i + 1, $res);
40             }
41         }
42     } else {
43         $res[$i] = $arr;
44
45     }
46 }
47
48 $arr = [‘A‘,
49     [1, 3, [‘a‘, [0,9] ]   ],
50 ];
51 arrange($arr, 0, [0]);
52 /*
53  * 第一个参数是要排列,第二个是初始化排列数组的下标,必须为0否则会出错,
54  * 第三个参数初始化存储打印元素的数组也必须为[0]
55  */
时间: 2024-12-25 05:20:50

多维数组的排列--待研究-----的相关文章

js多个(N)个数组的的元素组合排序算法,多维数组的排列组合或多个数组之间的排列组合

现在有一批手机,其中颜色有['白色','黑色','金色','粉红色']:内存大小有['16G','32G','64G','128G'],版本有['移动','联通','电信'],要求写一个算法,实现[['白色','16G','移动'], ['白色','16G','联通'] ...]这样的组合,扩张,如果后面还有参数,比如再加一个['国行','港版','美版'],不改程序一样可以执行! 通过上面规律可以发现这个算法就是:一个数组里面包含若干个数组,进行组合 算法代码写法一: // 执行组合排列的函数

VB6之多维数组中元素在内存中的排列情况

1 Private Declare Sub RtlMoveMemory Lib "kernel32" (Destination As Any, Source As Any, ByVal Length As Long) 2 3 4 'code by lichmama from cnblogs.com 5 Private Sub Form_Load() 6 Dim a(2) As Byte 7 Dim b(2, 2) As Byte 8 Dim c(2, 2, 2) As Byte 9 1

JavaScript 递归法排列组合二维数组2

<html> <head> <title>二维数组排列组合</title> </head> <body> <div id="showDiv"></div> </body> <script type="text/javascript"> var arrays = [ [ '1-1-雨尘', '1-2-芸芸', '1-3-简一', '1-4-乐乐' ]

JavaScript 递归法排列组合二维数组

<html> <head> <title>二维数组排列组合</title> </head> <body> <div id="showDiv"></div> </body> <script type="text/javascript"> var arrays = [ [ '1-1-雨尘', '1-2-芸芸', '1-3-简一', '1-4-乐乐' ]

JavaScript 二维数组排列组合2

<html> <head> <title>二维数组排列组合</title> </head> <body> <div id="showDiv"></div> </body> <script type="text/javascript"> var arrays = [ [ '1-1-雨尘', '1-2-芸芸', '1-3-简一', '1-4-乐乐' ]

二维数组查找

问题描述 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 特点:如下图,基本上是一个m*n的矩阵,排列顺序如题目描述的一样 思路:从右上角的数开始查找,对于右上角的数来说,他的左侧的数比自己小,下方的数比自己大,如图:将待查找的数据与右上方的数比较时,如果比9小,查再查找9左边的数,如果比9大,则继续查找9下方的数,依次继续比较,知道找到或者x>=矩阵行数或者y<0,换句话说

PHP不定维数组去除空值

最近遇到一个问题,是将不定维数组的空值去除,回来研究了一下,写出来了,不知道是否还能优化 写的不好的,如果有好的想法或者好的实现方法,欢迎提出来,如果哪里写错了,也欢迎大牛可以讲解一下 代码如下,欢迎指正 function array_remove($arr){ //首先判断是不是一个数组 if(!is_array($arr)) return false; foreach ($arr as $key => $value) { if(is_array($value)) { $arr[$key] =

数组指针与二维数组的寻址

引例:已知如下程序 1 #include <stdio.h> 2 main() 3 { 4 int x[3][4] = {1,3,5,7,9,11,2,4,6,8,10,12} ; 5 int (*p)[4] = x, k = 1, m, n = 0; 6 for(m=0; m < 2; m++) 7 n += *(*(p+m)+k); 8 printf("%d\n",n); 9 } 试写出程序的输出值.(虽然我很讨厌做这种笔头功夫的题,我也坚信编程语言是在实践中练出

实验九:二维数组和字符数组的应用

知识点: 二维数组的定义及引用:1.二维数组的定义: 二维数组的定义形式:类型名   数组名[行长度][列长度]:例如:        int  a[3][2]:        定义1个二维数组a,3行2列,6个元素: int   b[5][10]:        定义1个二维数组a,5行10列,50个元素: 二维数组的引用:行下标的范围:0~行长度-1:                        列下表的范围:0~列长度-1: 字符串的存储和运算可以用一维字符数组实现: 一维字符数组的定义