我有一个阵列说
arr[]={1,2,3,4,6,7,8,10,11,12,13,14,16,17,18}
我需要3个块,每个块包含3个元素。[3将是动态的]
输出应为
block[1]={1,2,3}
block[2]={6,7,8}
block[3]={10,11,12}
php中的循环脚本是什么
答案 0 :(得分:1)
您可以使用array_chunk
$arr = range(1, 18);
$result = array_chunk($arr, 3);
print_r($result);
答案 1 :(得分:1)
$arr=[1,2,3,4,6,7,8,10,11,12,13,14,16,17,18];
unset($arr[3]); // unset key 4
$chunks = array_chunk($arr, 3,true);// pass true here
print_r($chunks);
答案 2 :(得分:0)
$arr=[1,2,3,4,6,7,8,10,11,12,13,14,16,17,18];
$block = array_chunk($arr,3);
print_r($block);
<强>输出强>
Array
(
[0] => Array
(
[0] => 1
[1] => 2
[2] => 3
)
[1] => Array
(
[0] => 4
[1] => 6
[2] => 7
)
[2] => Array
(
[0] => 8
[1] => 10
[2] => 11
)
[3] => Array
(
[0] => 12
[1] => 13
[2] => 14
)
[4] => Array
(
[0] => 16
[1] => 17
[2] => 18
)
)
$block[] = array_slice($arr, 0, 3, true);
$block[] = array_slice($arr, 4, 3, true);
$block[] = array_slice($arr, 7, 3, true);
print_r($block);
<强>输出强>
Array
(
[0] => Array
(
[0] => 1
[1] => 2
[2] => 3
)
[1] => Array
(
[4] => 6
[5] => 7
[6] => 8
)
[2] => Array
(
[7] => 10
[8] => 11
[9] => 12
)
)
参考:Demo
答案 3 :(得分:0)
您只需使用一行代码就可以完成。
$array = array_chunk(array_slice($array, 0, 9), 3);
array_slice
用于切割原始数组中9个键值对的一部分。
array_chunk
然后将其分成3个块。
如果您的数组顺序不正确,则上述代码将无效。要解决此问题,首先需要sort
您的数组。这可以按如下方式完成:
$array = sort($array);
上面的函数会将数组从低到高排序。
进行测试运行会让我回复:
array(3) {
[0]=>
array(3) {
[0]=>
int(1)
[1]=>
int(2)
[2]=>
int(3)
}
[1]=>
array(3) {
[0]=>
int(4)
[1]=>
int(5)
[2]=>
int(6)
}
[2]=>
array(3) {
[0]=>
int(7)
[1]=>
int(8)
[2]=>
int(9)
}
}