部分读取数组

时间:2015-01-31 06:05:32

标签: php arrays

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

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

5 个答案:

答案 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";

}

http://php.net/manual/en/function.array-chunk.php

答案 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 ===============