dqbh8054 2015-11-27 09:16
浏览 64

生成矩阵的所有组合

I am using this code to generate all the combinations in a matrix but it is not returning output. Can you help me?

function combos($data, $all = array(), $group = array(), $val = null,$i=0) {
    if (isset($val)) {
        array_push($group, $val);
    }
    if ($i >= count($data)) {
        array_push($all, $group);
    } else {
        foreach ($data[$i] as $v) {
            combos($data, &$all, $group, $v, $i + 1);
        }
    }
    return $all;
}
$data = array(
    array('a', 'b'),
    array('d', 'e', 'g'),
    array('w', 'x', 'y', 'z')
);
$combos = combos($data);
print_r($combos);

the output should be

            0 1 2
array[0]  = a d w
array[1]  = a d x
array[2]  = a d y
array[3]  = a d z
array[4]  = a e w
array[5]  = a e x
array[6]  = a e y
.
.
.
array[23] = b g z
  • 写回答

3条回答 默认 最新

  • doutuo2829 2015-11-27 09:29
    关注

    Pass $all as value and not as reference in your foreach loop. Also you are not collecting the returned value of combos function in your foreach loop.

    Modify combos($data, &$all, $group, $v, $i + 1);
    to
    $all = combos($data, $all, $group, $v, $i + 1);

    评论

报告相同问题?

悬赏问题

  • ¥15 帮我写一个c++工程
  • ¥30 Eclipse官网打不开,官网首页进不去,显示无法访问此页面,求解决方法
  • ¥15 关于smbclient 库的使用
  • ¥15 微信小程序协议怎么写
  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教