PHP 多个数组的排列组合

xilidaonitian 2014-07-14 10:22:01
http://ask.csdn.net/questions/148636
...全文
431 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
青鬆下的坚躯 2014-07-14
  • 打赏
  • 举报
回复
//统计组合
function zuhe($arr){
    if(count($arr) >= 2){
        $tmparr = array();
        $arr1 = array_shift($arr);
        $arr2 = array_shift($arr);
        foreach($arr1 as $k1 => $v1){
            foreach($arr2 as $k2 => $v2){
                $tmparr[] = $v1.$v2;
            }
        }
        array_unshift($arr, $tmparr);
        $arr = zuhe($arr);
    }else{
        $arr = array_shift($arr);
    }
    return $arr;
}

$arr = array(
    array(1,2,3,4),
    array('a','b','c')/*,
    array(8,9,0),
    array('x','y','z')*/
);

print_r(zuhe($arr));
/*
Array
(
    [0] => 1a
    [1] => 1b
    [2] => 1c
    
    [3] => 2a
    [4] => 2b
    [5] => 2c
    
    [6] => 3a
    [7] => 3b
    [8] => 3c
    
    [9] => 4a
    [10] => 4b
    [11] => 4c
)*/
猪崽儿0o0 2014-07-14
  • 打赏
  • 举报
回复
引用 1 楼 xuzuning 的回复:
function foo($d) {
  $r = array_pop($d);
  while($d) {
    $t = array();
    $s = array_pop($d);
    if(! is_array($s)) $s = array($s);
    foreach($s as $x) {
      foreach($r as $y) $t[] = array_merge(array($x), is_array($y) ? $y : array($y));
    }
    $r = $t;
  }
  return $r;
}
$ar = array(
  array(1,2,3,4),
  array('a','b','c'),
);
print_r(foo($ar));

Array
(
    [0] => Array
        (
            [0] => 1
            [1] => a
        )

    [1] => Array
        (
            [0] => 1
            [1] => b
        )

    [2] => Array
        (
            [0] => 1
            [1] => c
        )

    [3] => Array
        (
            [0] => 2
            [1] => a
        )

    [4] => Array
        (
            [0] => 2
            [1] => b
        )

    [5] => Array
        (
            [0] => 2
            [1] => c
        )

    [6] => Array
        (
            [0] => 3
            [1] => a
        )

    [7] => Array
        (
            [0] => 3
            [1] => b
        )

    [8] => Array
        (
            [0] => 3
            [1] => c
        )

    [9] => Array
        (
            [0] => 4
            [1] => a
        )

    [10] => Array
        (
            [0] => 4
            [1] => b
        )

    [11] => Array
        (
            [0] => 4
            [1] => c
        )

)

收藏以后看看。
xuzuning 2014-07-14
  • 打赏
  • 举报
回复
function foo($d) {
  $r = array_pop($d);
  while($d) {
    $t = array();
    $s = array_pop($d);
    if(! is_array($s)) $s = array($s);
    foreach($s as $x) {
      foreach($r as $y) $t[] = array_merge(array($x), is_array($y) ? $y : array($y));
    }
    $r = $t;
  }
  return $r;
}
$ar = array(
  array(1,2,3,4),
  array('a','b','c'),
);
print_r(foo($ar));

Array
(
    [0] => Array
        (
            [0] => 1
            [1] => a
        )

    [1] => Array
        (
            [0] => 1
            [1] => b
        )

    [2] => Array
        (
            [0] => 1
            [1] => c
        )

    [3] => Array
        (
            [0] => 2
            [1] => a
        )

    [4] => Array
        (
            [0] => 2
            [1] => b
        )

    [5] => Array
        (
            [0] => 2
            [1] => c
        )

    [6] => Array
        (
            [0] => 3
            [1] => a
        )

    [7] => Array
        (
            [0] => 3
            [1] => b
        )

    [8] => Array
        (
            [0] => 3
            [1] => c
        )

    [9] => Array
        (
            [0] => 4
            [1] => a
        )

    [10] => Array
        (
            [0] => 4
            [1] => b
        )

    [11] => Array
        (
            [0] => 4
            [1] => c
        )

)

20,359

社区成员

发帖
与我相关
我的任务
社区描述
“超文本预处理器”,是在服务器端执行的脚本语言,尤其适用于Web开发并可嵌入HTML中。PHP语法利用了C、Java和Perl,该语言的主要目标是允许web开发人员快速编写动态网页。
phpphpstorm 技术论坛(原bbs)
社区管理员
  • 开源资源社区
  • phpstory
  • xuzuning
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧