部分读取数组


Reading array partially

我需要在循环中部分读取数组,这就是我正在做的事情:

$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 ===============