我需要在循环中部分读取数组,这就是我正在做的事情:
$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 ===============
答案 0 :(得分:2)
更改array_splice($list, $i) as $value
至:array_slice($list, $i, 3) as $value
array_splice:删除数组的一部分并将其替换为其他内容
array_slice:提取数组的一部分
答案 1 :(得分:1)
<?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";
}
?>
答案 2 :(得分:1)
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";
}
答案 3 :(得分:0)
试试这个:
$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";
}
答案 4 :(得分:0)
以下是您想要的输出,为实现此目的,您需要将array_slice
与第3个参数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 ===============