谁能告诉这样一段js函数转php函数

tao988 2018-05-18 11:19:31
t.number.each_combo = function (e, t) {
var n = [];
return function r(e, t, i) {
if (i === 0) return n.push(e);
for (var s = 0, o = t.length; s <= o - i; s++)r(e.concat(t[s]), t.slice(s + 1), i - 1);
}([], e, t), n
}


e为浮点数,比如1.1,2.2,3.3这样的数组 t为2或0之类的整数,要实现是
[
0: [
0: [1.1 ],
1: [2.2]
],
1:[
0:[1.1],
1:[3.3]
]
2:[
0:[2.2],
1:[3.3]
]

]
...全文
305 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
tao988 2018-05-19
  • 打赏
  • 举报
回复
谢谢版主,版主果然厉害! use (&$n, &$r)这里不懂什么意思?还是头一次见到在php中用use关键字!
xuzuning 2018-05-19
  • 打赏
  • 举报
回复
递归法求组合,直译即可
function combo($e, $t) {
  $n = [];
  $r = function($e, $t, $i) use (&$n, &$r){
    if($i === 0) return $n[] = $e;
    for($s=0,$o=count($t); $s<=$o-$i; $s++) $r(array_merge($e, [$t[$s]]), array_slice($t, $s+1), $i-1);
  };
  $r([], $e, $t);
  return $n;
}
print_r(combo([1,2,3,4],2));
Array
(
    [0] => Array
        (
            [0] => 1
            [1] => 2
        )

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

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

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

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

    [5] => Array
        (
            [0] => 3
            [1] => 4
        )

)

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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