如何在 PHP 中创建复杂的数组结构

佩乔·佐涅夫

我必须在数组中制作这种结构;

我们有三个( 3 )变量来创建这个结构:

$numberOfParticipants = 38; // 38 is example
$numberOfParticipantsPerHeat = 8 // 8 is example
$numberOfHeats = 5; // 5 is example

基于这个变量,我有这个表:

我的桌子

问题是,我不能在 31 OR 38 之后放置 '-' 或 null。任务是我必须使数组的数组像照片一样“几乎相等”,并且必须依赖于上面的变量。顺便说一下,在我创建了正确的列表后,我会将数组切成 5 或 6 或任何我需要的部分,这不是问题,问题是我必须先像这样解析列表。这是我到目前为止尝试过的:

    $calc1 = (int)round($numberOfParticipants * $numberOfParticipantsPerHeat, -1); //First round the numberOfParticipants to closest integer by 10


    $readyArr = [];


    for ($i = 1; $i <= $calc1; $i++) {

        if ($i <= $numberOfParticipants) {

            $readyArr[$i] = $i;

        } else {

            $readyArr[$i] = null;
        }

    }

此代码段的问题在于它将 null 放在列表末尾而不是 31 之后,或者基于 var。这是我的结果:

array:40 [▼
  1 => 1
  2 => 2
  3 => 3
  4 => 4
  5 => 5
  6 => 6
  7 => 7
  8 => 8
  9 => 9
  10 => 10
  11 => 11
  12 => 12
  13 => 13
  14 => 14
  15 => 15
  16 => 16
  17 => 17
  18 => 18
  19 => 19
  20 => 20
  21 => 21
  22 => 22
  23 => 23
  24 => 24
  25 => 25
  26 => 26
  27 => 27
  28 => 28
  29 => 29
  30 => 30
  31 => 31
  32 => 32
  33 => 33
  34 => 34
  35 => 35
  36 => 36
  37 => 37
  38 => 38
  39 => null
  40 => null
]

我想要的分区后的数组应该是:

 array(
            0 => array(0 => 1,  1 => 2,  2 => 3,  3 => 4,  4 => 5,  5 => 6,  6 => 7,  7 => 8,),
            1 => array(0 => 9,  1 => 10, 2 => 11, 3 => 12, 4 => 13, 5 => 14, 6 => 15, 7 => 16,),
            2 => array(0 => 17, 1 => 18, 2 => 19, 3 => 20, 4 => 21, 5 => 22, 6 => 23, 7 => 24,),
            3 => array(0 => 25, 1 => 26, 2 => 27, 3 => 28, 4 => 29, 5 => 30, 6 => 31, 7 => null,),
            4 => array(0 => 32, 1 => 33, 2 => 34, 3 => 35, 4 => 36, 5 => 37, 6 => 38, 7 => null,),
        );

每一个帮助,每一个线索都将受到高度赞赏。

不是黑暗绝对

关于目标结构,您需要了解两件事:

有多少玩家在第一个(它总是最大的,如果只有一个)集合中。

$playersPerHeat = ceil($numberOfParticipants / $numberOfHeats);
// note this replaces your hard-coded $numberOfParticipantsPerHeat

您还需要知道实际上有多少炉次,即实际上有多少炉次已满。

$fullHeats = $numberOfParticipants % $numberOfHeats ?: $numberOfHeats;
// The ?: bit means that if we get zero (ie. all equal heats), then we
// count all the heats instead, since they're all full.

现在很容易!

$players = range(1,$numberOfParticipants);
$heats = array_merge(
    array_chunk(
        array_slice($players, 0, $fullHeats * $playersPerHeat),
        $playersPerHeat
    ),
    array_chunk(
        array_slice($players, $fullHeats * $playersPerHeat),
        $playersPerHeat - 1
    )
);

就是这样!演示

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在php中动态创建数组?

来自分类Dev

如何在php中创建数组

来自分类Dev

如何在PHP中创建此数组?

来自分类Dev

如何在php中创建对象数组

来自分类Dev

如何在PHP中创建此数组?

来自分类Dev

如何在PHP中创建类似数据结构的集合?

来自分类Dev

如何在PHP中创建类似数据结构的集合?

来自分类Dev

如何在PHP中更改数组结构

来自分类Dev

如何在 PHP 中创建 .json 数组的组合数组?

来自分类Dev

如何在php中解析复杂的xml

来自分类Dev

如何在PHP中基于值创建数组?

来自分类Dev

如何在PHP中动态创建嵌套数组

来自分类Dev

如何在PHP中创建Javascript二维数组?

来自分类Dev

如何在PHP中为JSON数组创建搜索功能

来自分类Dev

如何在php中创建数据透视数组

来自分类Dev

如何在PHP数组中创建案例作为键值?

来自分类Dev

如何在PHP中基于值创建数组?

来自分类Dev

如何在php中创建字符串对象数组?

来自分类Dev

如何在Laravel / PHP中创建多维数组

来自分类Dev

如何在PHP的数组中构建数组

来自分类Dev

如何在php中访问给定数组结构的数组键值?

来自分类Dev

在PHP中创建动态数组键结构

来自分类Dev

如何在php中创建“ 122112211221”系列

来自分类Dev

如何在PHP中创建.webp图像

来自分类Dev

如何在PHP中从KML创建KMZ?

来自分类Dev

如何在php中创建动态URL?

来自分类Dev

如何在php mysql中创建combobox?

来自分类Dev

如何在php中创建日志文件?

来自分类Dev

如何在PHP中创建嵌套对象