已知:
Array
(
    [0] => prep
    [1] => date
    [2] => Array
        (
            [0] => Array
                (
                    [0] => Array
                        (
                            [0] => pro
                            [1] => Array
                                (
                                    [0] => Array
                                        (
                                            [0] => av
                                            [1] => aj
                                        )                                    [1] => pro
                                )                        )                    [1] => abc
                    [2] => Array
                        (
                            [0] => name
                            [1] => Array
                                (
                                    [0] => Array
                                        (
                                            [0] => av
                                            [1] => aj
                                        )                                    [1] => name
                                )                        )                )        ))
   
如何从已知数组生成以下形式数组:
Array
(
    [0] => Array
        (
            [0] => prep
            [1] => date
            [2] => pro
        )    [1] => Array
        (
            [0] => prep
            [1] => date
            [2] => av
            [3] => pro
        )    [2] => Array
        (
            [0] => prep
            [1] => date
            [2] => aj
            [3] => pro
        )    [3] => Array
        (
            [0] => prep
            [1] => date
            [2] => abc
        )    [4] => Array
        (
            [0] => prep
            [1] => date
            [2] => name
        )    [5] => Array
        (
            [0] => prep
            [1] => date
            [2] => av
            [3] => name
        )    [6] => Array
        (
            [0] => prep
            [1] => date
            [2] => aj
            [3] => neme
        ))

解决方案 »

  1.   

    第一层有3个元素,其中元素2(角标为2的)又有3个元素,元素2的这3个元素之间是或的关系,即取其一即可,元素元素2的这3个元素中0和2号又是数组,这个数组里元素间的关系也是或,即取其一即可,而这个数组里的元素若
    再为数组,其中元素就为与的关系,如av,aj二选一,然后加上pro是一种组合。总之就是第一层的元素3有多种
    排列组合的可能性,然后我要排列出这所有可能的组合。是很乱,我都憋了好几天了也弄不出来,不知还有没有
    解了,哎!盼救星阿~~~~~~~~~~~~~
      

  2.   

    看了半天总算明白了 根本就没有什么或的关系 就是穷举按照历便数组的组合如果环境是X86的话 深度不超过27 可以用递归 非递归算法有点复杂第一层全部需要 不参加循环
    $array;//原始数据
    $a = array($array[0],$array[1]); //模板
    $r = array(); //结果
    test($array, $a);
    function test($array, $a)
    {
     global $r;
     foreach($array as $tmp){
      if(!is_array($tmp)){
        $tmp2 = $a;
        $tmp2[] = $tmp;
        $r[] = $tmp2; //没有IDE也没有手册 忘了合并数组的函数
       }else {
         test($tmp, $a);
       }
     }
    }
      

  3.   

    test($array[2], $a);失误 想着想着也给忘了