当前位置: 首页 > 面试题库 >

PHP数组组合

万俟旭
2023-03-14
问题内容

我有一个由7个数字组成的数组(1,2,3,4,5,6,7),我想制作5个数字对,例如(1,2,3,4,5),(1,2,3
,4,6,),(1,2,3,4,7)。(1,2,3,4,5)等于(4,5,3,1,2)

我想知道PHP中是否有函数或任何可以执行此操作的算法?我不知道从哪里开始。你能帮助我吗 ?

我想将7个给定数字的所有组合(它们从数组中取出)放入5个插槽中,而无视顺序


问题答案:

如果链接断开,这里是代码。

class Combinations implements Iterator
{
    protected $c = null;
    protected $s = null;
    protected $n = 0;
    protected $k = 0;
    protected $pos = 0;

    function __construct($s, $k) {
        if(is_array($s)) {
            $this->s = array_values($s);
            $this->n = count($this->s);
        } else {
            $this->s = (string) $s;
            $this->n = strlen($this->s);
        }
        $this->k = $k;
        $this->rewind();
    }
    function key() {
        return $this->pos;
    }
    function current() {
        $r = array();
        for($i = 0; $i < $this->k; $i++)
            $r[] = $this->s[$this->c[$i]];
        return is_array($this->s) ? $r : implode('', $r);
    }
    function next() {
        if($this->_next())
            $this->pos++;
        else
            $this->pos = -1;
    }
    function rewind() {
        $this->c = range(0, $this->k);
        $this->pos = 0;
    }
    function valid() {
        return $this->pos >= 0;
    }

    protected function _next() {
        $i = $this->k - 1;
        while ($i >= 0 && $this->c[$i] == $this->n - $this->k + $i)
            $i--;
        if($i < 0)
            return false;
        $this->c[$i]++;
        while($i++ < $this->k - 1)
            $this->c[$i] = $this->c[$i - 1] + 1;
        return true;
    }
}


foreach(new Combinations("1234567", 5) as $substring)
    echo $substring, ' ';

12345 12346 12347 12356 12357 12367 12456 12457 12467 12567 13456 13457 13467
13567 14567 23456 23457 23467 23567 24567 34567



 类似资料:
  • 问题内容: 我有以下数组 如何将数组分组?是否有任何本地php函数可用于执行此操作? 如果我以上所述,那么我将得到一个副本,我该如何避免呢? 在上面的示例中有2个项目,因此它需要位于中。 编辑:一切正常:可以用一个步骤实现相同的目的吗? 问题答案: 没有本机的,只需使用循环即可。

  • 主要内容:实例,数组是什么?,在 PHP 中创建数组,PHP 数值数组,实例,获取数组的长度 - count() 函数,实例,遍历数值数组,实例,PHP 关联数组,实例,遍历关联数组,实例,多维数组,完整的 PHP Array 参考手册数组能够在单个变量中存储多个值: 实例 <?php $cars=array("Volvo","BMW","Toyota"); echo "I like " . $cars[0] . ", " . $cars[1] . " and " . $cars[2] . ".

  • 问题内容: 如何在PHP中合并n个数组 我的意思是我怎么可以这样做的工作: OR 里面有多个数组的数组在哪里,像这样: 我的结果是: 我需要的是 问题答案: array_merge可以接受可变数量的参数,因此,使用一些call_user_func_array技巧,您可以将数组传递给它: 基本上可以像输入以下内容一样运行: 更新: 现在有了5.6,我们有了运算符来将数组解压缩为参数,因此您可以: 并

  • 问题内容: 我有一个问题困扰了一段时间(头冷也无济于事!),基本上我有一个PHP数组,看起来像下面的例子: 而且我希望能够由此生成一个表格,其中包含这些表格的所有可能组合,但无需重复任何组合(无论其位置如何),因此例如 但是我希望它能够处理尽可能多的不同数组。 问题答案: 这称为“笛卡尔积”,数组http://php.net/manual/en/ref.array.php上的php手册页显示了一些

  • 问题内容: 我已经搜索了SO,但是找不到答案。我的PHP脚本正在通过http发布接收一些JSON,如下所示: 如您所见,这里有3个项目,但是当我将它变成一个PHP数组对象并计算项目时,我返回1,应该为3,这是我的PHP代码: 并打印出“ 1”而不是“ 3”。 问题答案: 尝试 通常,如果您想知道变量值的结构是什么,请执行 在替代品,如这个功能的优势,并是,它打印的PHP代码(并因此被人谁了解PHP

  • 主要内容:PHP - 数组排序函数,sort() - 对数组进行升序排列,实例,实例,rsort() - 对数组进行降序排列,实例,实例,asort() - 根据数组的值,对数组进行升序排列,实例,ksort() - 根据数组的键,对数组进行升序排列,实例,arsort() - 根据数组的值,对数组进行降序排列,实例,krsort() - 根据数组的键,对数组进行降序排列,实例,完整的 PHP Array 参考手册数组中的元素可以按字母或数字顺序进行降序或升序排列。 PHP - 数组排序函数 在