在php foreach循环中无限堆栈

时间:2018-04-24 20:14:35

标签: php loops foreach

是否可以在不重复下面代码的foreach循环的情况下拥有堆栈。

<?php
$stack1 = array('a', 'b', 'c', 'd', 'e','f','g','h','i','j'); 
$lp1 = 0;
$id1 = 0;
foreach($stack1 AS $v){         
    $lp1++;
    if($lp1==3){
      break;
    }else{
      $id1++;
      echo 'Stack-1 => '.$v.'<br>';      
    }    
}
$stack2 = array_slice($stack1, $id1);
$lp2 = 0;
$id2 = 0;
foreach ($stack2 as $v2){
    $lp2++;
    if($lp2==3){
      break;
    }else{
      $id2++;
      echo 'Stack-2 => '.$v2.'<br>';
    }
}
$stack3 = array_slice($stack2, $id2);
$lp3 = 0;
$id3 = 0;
foreach ($stack3 as $v3){
    $lp3++;
    if($lp3==3){
      break;
    }else{
      $id3++;
      echo 'Stack-3 => '.$v3.'<br>';      
    }
}
?>

第一个堆栈1的大小是动态的,可能会不时变化。我不知道如何在不重复foreach循环的情况下使其工作。请帮忙。

1 个答案:

答案 0 :(得分:1)

不确定这是不是你的意思,但它会创建变量$ stack1 - &gt; $ stack5作为数组,每个包含两个项目。

我使用array_chunk拆分数组,然后用关联键创建一个新数组,我可以提取它来分离数组变量。

$stack1 = array('a', 'b', 'c', 'd', 'e','f','g','h','i','j'); 

$stacks = array_chunk($stack1, 2);

Foreach($stacks as $key => $stack){
    $new['stack' . ($key+1)] = $stack;
}
Extract($new);

Var_dump($stack1, $stack2, $stack3, $stack4, $stack5);

https://3v4l.org/t7ug6