Php 将某个存储桶(或具有某个属性)中的项目均匀分布到属性后面的另一个存储桶(或数组)

Php 将某个存储桶(或具有某个属性)中的项目均匀分布到属性后面的另一个存储桶(或数组),php,mysql,algorithm,Php,Mysql,Algorithm,将某个存储桶(或具有某个属性)中的项目均匀分布到属性后面的另一个存储桶(或数组)中 我有一个类似的数组 Array ( [type1] => Array ( [0] => 1, [1] => 2, [2] => 3, [3] => 4 ) [type2] => Array (

将某个存储桶(或具有某个属性)中的项目均匀分布到属性后面的另一个存储桶(或数组)中

我有一个类似的数组

 Array
(
    [type1] => Array
        (
            [0] => 1,
            [1] => 2,
            [2] => 3,
            [3] => 4
        )

    [type2] => Array
        (
            [0] => 5,
            [1] => 6,
            [2] => 7,
            [3] => 8
        )

    [type3] => Array
        (
            [0] => 9,
            [1] => 10,
            [2] => 11,
            [3] => 12
        )
    [type4] => Array
        (
            [0] => 13,
            [1] => 14,
            [2] => 15,
            [3] => 16
        )
)
因此,我需要将其排序为一个数组,这样这个新数组的每个元素都会将所有类型的元素平均分布到新数组的每个元素上

我需要什么

    array(
[0]=>array(1,5,9,13)
[1]=>array(2,6,10,14)
[2]=>array(3,7,11,15)
[3]=>array(4,8,12,16)
)
这里的问题是第一个数组的子数组可能没有不同的元素

一个简单的版本:想象你有一套来自不同国家的马 你如何组织不同比赛的“n”(这里是4)个数量,以便在所有比赛中,在场的马的国家尽可能均匀地分布

在Db中,它有点像

regid nation    race1
1     country1  1
2     country2  1
3     country3  0
4     country1  1
5     country1  1

其中regid是每个参赛者的id no,race1表示其是否参加了该比赛

以下生成两个数组:
$values
包含值,
$out
包含格式为
type1:3
的键。变量
$max
确定最大集合数:

$arr['type1'] = array(1, 2, 3, 4, 5);
$arr['type2'] = array(6, 7, 8, 9);
$arr['type3'] = array(10, 11, 12, 13, 14, 15);
$arr['type4'] = array(16, 17, 18, 19);
$arr['type5'] = array(20, 21, 22, 23, 24);
$max = 5;
$out = array();
$values = array();
$i = 0;
foreach ($arr as $key1 => $type){
    foreach ($type as $key2 => $item){
        $out[$i%$max][] = $key1.':'.$key2;
        $values[$i%$max][] = $item;
        $i++;
    }
}
var_dump($values);

[0] => array(1, 6, 11, 16, 21)
[1] => array(2, 7, 12, 17, 22)
[2] => array(3, 8, 13, 18, 23)
[3] => array(4, 9, 14, 19, 24)
[4] => array(5, 10, 15, 20)
或者,您可以访问阵列密钥:

var_dump($out);

Array
(
    [0] => Array
        (
            [0] => type1:0
            [1] => type2:0
            [2] => type3:1
            [3] => type4:0
            [4] => type5:1
        )

    [1] => Array
        (
            [0] => type1:1
            [1] => type2:1
            [2] => type3:2
            [3] => type4:1
            [4] => type5:2
        )

    [2] => Array
        (
            [0] => type1:2
            [1] => type2:2
            [2] => type3:3
            [3] => type4:2
            [4] => type5:3
        )

    [3] => Array
        (
            [0] => type1:3
            [1] => type2:3
            [2] => type3:4
            [3] => type4:3
            [4] => type5:4
        )

    [4] => Array
        (
            [0] => type1:4
            [1] => type3:0
            [2] => type3:5
            [3] => type5:0
        )

)

. . 这被标记为“mysql”。您真的想要MySQL解决方案还是php解决方案?如果您想要一个MySQL解决方案,数据库中的数据是什么样子的?添加了一个示例db数据