array_slice - 为什么这在foreach中不起作用


array_slice - how come this doesn't work in foreach

这里的菜鸟。我有一个数组,看起来像:

Array
(
    [15] => Array
      (
        [0] => Array
            (
                [id] => 5216
                [name] => Grow your own Irish Shamrock gifts set
                [ordered] => 473
                [image] => FunShamrockPot.jpg
            )
        [1] => Array
            (
                [id] => 5217
                [name] => Irish Shamrock Seeds
                [ordered] => 357
                [image] => FunShamrockSeed.jpg
            )
        [2] => Array
            (
                [id] => 5759
                [name] => Ireland Fleece with Shamrock Badge
                [ordered] => 1
                [image] => IrelandFleeceShamrocks.jpg
            )
    )
    [31] => Array
      (
        [0] => Array
            (
                [id] => 5081
                [name] => Tartan Guinness Flat Cap
                [ordered] => 356
                [image] => GuinnessTartanFlatCap.jpg
            )
        [1] => Array
            (
                [id] => 4894
                [name] => Black signature emblem Guinness baseball hat
                [ordered] => 176
                [image] => GuinnessSigBBHat.jpg
            )

该数组称为$products,我试图打印出每个顶级数组中的前五个数组(如果这有意义的话),换句话说,array[15]<- 15 以下的前五个数组,array[31]<- 这里的前 5 个数组。

我正在尝试的代码是:

foreach($products as $key=>$value) {
    array_slice($value, 0, 5);
    foreach($value as $product) {
        echo $product['name'] . '<br/>';
    }
    echo '<br/>';
}

我不知道为什么array_slice不起作用,我做错了什么?

问题是array_slice不修改输入数组,你需要返回值:

foreach($products as $key=>$value) {
    $sliced = array_slice($value, 0, 5);
    foreach($sliced as $product) {
        echo $product['name'] . '<br/>';
    }
    echo '<br/>';
}
foreach($products as $key=>$value) {
    $i = 0;
    foreach($value as $product) {
        if($i <5) {
        echo $product['name'] . '<br/>';
        $i++;
        } else {
        break;
        }
    }
    echo '<br/>';
}

编辑以回答为什么array_slice不起作用

你需要做

$newarray = array_slice($value, 0, 5);
    foreach($newarray as $product) {
    echo $product['name'] . '<br/>';
}