我需要在循环中部分读取数组,这就是我正在做的事情:
$list = range(1, 9);
shuffle($list);
print_r($list);
for ($i=0; $i<=9; $i++) {
if ($i % 3 == 0) {
echo "=============== START =============== 'n";
foreach (array_splice($list, $i) as $value) {
echo $value. "'n";
}
echo "=============== END =============== 'n";
}
}
输出:
Array
(
[0] => 4
[1] => 6
[2] => 8
[3] => 3
[4] => 7
[5] => 1
[6] => 9
[7] => 2
[8] => 5
)
=============== START ===============
4
6
8
3
7
1
9
2
5
=============== END ===============
=============== START ===============
=============== END ===============
=============== START ===============
=============== END ===============
=============== START ===============
=============== END ===============
。所以它只打印一次数组。但是我希望数组在每次迭代中打印0-3, 3-6, 6-9
。
预期输出:
=============== START ===============
4
6
8
=============== END ===============
=============== START ===============
3
7
1
=============== END ===============
=============== START ===============
9
2
5
=============== END ===============
更改array_splice($list, $i) as $value
至: array_slice($list, $i, 3) as $value
array_splice:删除数组的一部分并将其替换为其他内容
array_slice:提取数组的一部分
<?php
$list = range(1, 9);
shuffle($list);
print_r($list);
$chunks = array_chunk($list,3);
foreach($chunks as $chunk){
echo "=============== START =============== 'n";
foreach($chunk as $value){
echo $value;
}
echo "=============== END =============== 'n";
}
?>
array_chunk是一个
选项。将数组拆分为 3 个块,然后是一个 foreach 循环。
$list = range(1, 9);
shuffle($list);
$chunks = array_chunk($list, 3);
foreach ($chunks as $chunk) {
echo "=============== START =============== <br/>'n";
foreach ($chunk as $value) {
echo $value . "<br/>'n";
}
echo "=============== END ===============<br/> 'n";
}
http://php.net/manual/en/function.array-chunk.php
试试这个:
$list = range(1, 9);
shuffle($list);
print_r($list);
for ($i = 0; $i < 3; $i++) {
$temp = 3 * $i;
echo "=============== START =============== 'n";
for($k = 0; $k < 3; $k++) {
$j = $temp + $k;
echo $list[$j]. "'n";
}
echo "=============== END =============== 'n";
}
这是您想要的输出,为了实现这一点,您需要将array_slice
与第三个参数一起使用length
$list = range(1, 9);
shuffle($list);
echo "<pre>";print_r($list);
for ($i=0; $i<=9; $i++) {
if ($i % 3 == 0) {
echo "=============== START =============== 'n";
foreach (array_slice($list, $i,3) as $value) {
echo $value. "'n";
}
echo "=============== END =============== 'n";
}
}
exit;
输出:
Array
(
[0] => 1
[1] => 5
[2] => 8
[3] => 9
[4] => 2
[5] => 4
[6] => 3
[7] => 6
[8] => 7
)
=============== START ===============
1
5
8
=============== END ===============
=============== START ===============
9
2
4
=============== END ===============
=============== START ===============
3
6
7
=============== END ===============