gpt4 book ai didi

php - 将数组拆分为 N 个数组 - PHP

转载 作者:IT王子 更新时间:2023-10-29 01:24:22 24 4
gpt4 key购买 nike

我有一个包含 18 个值的数组:

$array = array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r');

我想把这个数组分成 12 个不同的数组,所以它应该是这样的:

array(
0 => array('a', 'b'),
1 => array('c', 'd'),
2 => array('e', 'f'),
3 => array('g', 'h'),
4 => array('i', 'j'),
5 => array('k', 'l'),
6 => array('m'),
7 => array('n'),
8 => array('o'),
9 => array('p'),
10 => array('q'),
11 => array('r')
)

我的功能似乎不起作用

function array_split($array, $parts){
return array_chunk($array, ceil(count($array) / $parts));
}

$result = array_split($array, 12);

因为我得到 9 个不同的数组而不是 12 个。它会返回

array(
0 => array('a', 'b'),
1 => array('c', 'd'),
2 => array('e', 'f'),
3 => array('g', 'h'),
4 => array('i', 'j'),
5 => array('k', 'l'),
6 => array('m', 'n'),
7 => array('o', 'p'),
8 => array('q', 'r')
)

我该怎么做呢?谢谢。

最佳答案

这个简单的功能会为你工作:

用法

$array = range("a", "r"); // same as your array
print_r(alternate_chunck($array,12));

输出

Array
(
[0] => Array
(
[0] => a
[1] => b
)

[1] => Array
(
[0] => c
[1] => d
)

[2] => Array
(
[0] => e
[1] => f
)

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

[4] => Array
(
[0] => i
[1] => j
)

[5] => Array
(
[0] => k
[1] => l
)

[6] => Array
(
[0] => m
)

[7] => Array
(
[0] => n
)

[8] => Array
(
[0] => o
)

[9] => Array
(
[0] => p
)

[10] => Array
(
[0] => q
)

[11] => Array
(
[0] => r
)

)

更新以上对于大多数情况可能没有用...这是另一种类型的 block

$array = range("a", "r"); // same as your array
print_r(fill_chunck($array, 5));

输出

Array
(
[0] => Array
(
[0] => a
[1] => b
[2] => c
[3] => d
)

[1] => Array
(
[0] => e
[1] => f
[2] => g
[3] => h
)

[2] => Array
(
[0] => i
[1] => j
[2] => k
[3] => l
)

[3] => Array
(
[0] => m
[1] => n
[2] => o
[3] => p
)

[4] => Array
(
[0] => q
[1] => r
)

)

这将确保组在任何时候都不会超过 5 个元素,而另一个没有限制

使用的功能

function alternate_chunck($array, $parts) {
$t = 0;
$result = array();
$max = ceil(count($array) / $parts);
foreach(array_chunk($array, $max) as $v) {
if ($t < $parts) {
$result[] = $v;
} else {
foreach($v as $d) {
$result[] = array($d);
}
}
$t += count($v);
}
return $result;
}


function fill_chunck($array, $parts) {
$t = 0;
$result = array_fill(0, $parts - 1, array());
$max = ceil(count($array) / $parts);
foreach($array as $v) {
count($result[$t]) >= $max and $t ++;
$result[$t][] = $v;
}
return $result;
}

关于php - 将数组拆分为 N 个数组 - PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15579702/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com