Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何进行循环赛?还是有比循环赛更简单的方法?_Php_Mysql - Fatal编程技术网

Php 如何进行循环赛?还是有比循环赛更简单的方法?

Php 如何进行循环赛?还是有比循环赛更简单的方法?,php,mysql,Php,Mysql,我面临的问题是,如果存在如下示例所示的问题,我将以何种方式解决: 代码1000、2000、3000、4000、5000 身份证1、2、3 ======================================== 这: ID编号1的代码为1000、2000、3000、4000 ID号2的代码为2000、4000、3000 ID号3的代码为3000、4000、5000 ======================================== 连接所有字段后,每个ID都会找到相同的代码

我面临的问题是,如果存在如下示例所示的问题,我将以何种方式解决:

代码1000、2000、3000、4000、5000

身份证1、2、3

========================================

这:

ID编号1的代码为1000、2000、3000、4000

ID号2的代码为2000、4000、3000

ID号3的代码为3000、4000、5000

========================================

连接所有字段后,每个ID都会找到相同的代码。 从上面的例子中,我想产生一个公平的结果,并调整到它以前在每个ID上的代码,如下所示:(在ID集合上产生公平代码)

========================================

将是:

ID编号1的代码为1000、2000(1000必须位于编号1上,因为只有它的代码大于其他)

ID号2的代码为3000、4000

ID编号3的代码为5000(5000必须位于编号3上,因为只有它的代码大于其他)

========================================

有人说使用循环制,但我以前从未听说过循环制,我也不知道如何使用循环制,头脑如此空白。 有没有其他更简单的方法来使用PHP?我迷路了

谢谢

=============================================================

说明

我正在制作一个应用程序,其中每个用户都有一个预定义的代码,但没有相同的代码。例如,用户A的代码范围在1000-1500之间,用户B的代码范围在1600-2000之间。用户C的代码范围在1300-1550之间。正如我们所看到的,在a上的代码(a->1000-1500,C->1300-1550)中包含的C上的代码的距离肯定会在两个用户之间重复。 在这种情况下,如何对其进行分割,使其更加公平。设C有1300,A有1301,C有1302等等,直到1500

我认为我之前给出的简单例子可以理解,但它看起来像一团乱,是我的错误

$codes = array(1000, 2000, 3000, 4000, 5000);

// set up the receiving "containers"
$ids = array(
  array(),
  array(),
  array(),
);

$n_ids = count($ids);
$i = 0;

foreach ($codes as $code) {
    // use ($i % $n_ids) to distribute over $n_ids containers
    $ids[$i % $n_ids][] = $code;
    ++$i;
}

print_r($ids);
输出:

Array
(
    [0] => Array
        (
            [0] => 1000
            [1] => 4000
        )

    [1] => Array
        (
            [0] => 2000
            [1] => 5000
        )

    [2] => Array
        (
            [0] => 3000
        )

)
Array
(
    [0] => Array
        (
            [0] => 1000
            [1] => 2000
        )

    [1] => Array
        (
            [0] => 3000
            [1] => 4000
        )

    [2] => Array
        (
            [0] => 5000
        )

)
这个问题是一个简单的分发任务:在M个容器上分发N个项目


对于每个
i
(0不确定当您说字段“已连接”,id“查找”代码或生成“公平”结果时,您的意思是什么。请您解释一下这些。我说您想在一组id上公平分配代码是对的吗?@adomnom如果您不明白,我很抱歉。正如Jack所说,我想在一组id上公平分配代码。@杰克:是的,看起来是这样。很抱歉打扰你。你知道怎么做吗?因为我真的迷路了。@zerkms我想我应该先解释一下这个问题,但我也添加了
array\u chunk
。谢谢!)@杰克,我想用模,但不能用它。我能从数据库中得到一些代码到数组中吗?我的意思是,我们知道的数组是手动输入的数组(1000,2000,3000,4000,5000),如果我调用数据库中一些非手动输入(随机)的代码,比如数组(数据库中的代码)?@candies如果代码以迭代方式出现,最好使用模方法(第一种);只需更改
foreach
以迭代您的数据库结果即可。@Jack Oke,我从数据库中获得了代码,但ids有问题。我应该在ids变量中放入多少数组?->$ids=array(array(),array(),array())因为数据库中有很多代码。@这取决于你将为每个id分配多少代码……也许你可以解释一下你的应用程序的背景,因为它有点模糊。
$ids = array_chunk(array(1000, 2000, 3000, 4000, 5000), round(count($codes) / 3));
Array
(
    [0] => Array
        (
            [0] => 1000
            [1] => 2000
        )

    [1] => Array
        (
            [0] => 3000
            [1] => 4000
        )

    [2] => Array
        (
            [0] => 5000
        )

)