Php 在for循环中重新循环数组项

Php 在for循环中重新循环数组项,php,arrays,loops,for-loop,if-statement,Php,Arrays,Loops,For Loop,If Statement,我有一个for循环,用于检查条件,我想知道在对变量进行一些更改后,如果某个项不满足条件,是否可以通过该循环重新运行该项。 是否可以在else语句中添加一些内容,以允许我在新条件下重新运行相同的$item $array_1 = array(); $arraynumber = 0; foreach($test_array as $item) { if($item[2] == $test_array[$y][2]) { $array_1[$arraynumber][] =

我有一个for循环,用于检查条件,我想知道在对变量进行一些更改后,如果某个项不满足条件,是否可以通过该循环重新运行该项。 是否可以在else语句中添加一些内容,以允许我在新条件下重新运行相同的$item

$array_1 = array();
$arraynumber = 0;
foreach($test_array as $item) {
     if($item[2] == $test_array[$y][2]) {
          $array_1[$arraynumber][] = $item;
          $z++;
     } else {
          $arraynumber++;
          $y = $y+$z;
          $z=0;

          echo $item[2];
     }
}
解决方案是这样的,只针对那些感兴趣的人:

foreach($test_array as $item) {
if($item[2] == $test_array[$y][2]) {
  $array_1[$arraynumber][] = $item;
 $z++;
}elseif($item[2] == $test_array[$y+$z][2]){
$array_1[$arraynumber+1][] = $item;

 $y = $y+$z;
  $z=1;

  $arraynumber++;
}else{
$array_1[$arraynumber+2][] = $item;
 $z++;
 $y = $y+$z;
  $z=0;
  $arraynumber++;

echo $item[2];
}
}
你可以用

While(true){
//your code
}
在for循环之前,但请确保中断循环,否则它将成为无限循环并挂起服务器

在循环中重新运行项目

您可以使用它将内部数据指针设置为后退1步

prev($test_array); //will re-run the current element in the next iteration
您也可以使用

范例


使用多级中断,就像这个-

$flag=0;
while(true) {
    while($cond) {
        if($cond2) {
            $flag=1;
            break;
        }
    }
    if($flag) break;
}

我建议你解释一下你实际上想做什么,你想解决的算法或问题。不重新运行元素,更大的图片。prev$test_数组可能会工作。Goto php函数将有所帮助。@deceze我以前就整个问题发表过文章,但似乎得到的响应很少,而且通常不可用。问题是我想运行一个函数,将数组的内容排序到一个多维数组中,并对结果进行聚类。例如,我想用它按日期排序,这样我就可以显示某一天、某一周、某一个月的所有内容。goto不是一个函数,而且是一个坏习惯。你可以用它代替goto@Voitcus在本例中,这将产生不同的结果。@BartFriederichs是的,我编辑它来打破它2@Sann不完全是因为它没有告诉DipeshParmar这是一种不好的做法。为什么不使用break 2?@BartFriederichs,因为第一个break不会让你跳出第一个循环。这正是break 2的作用。谢谢,它不是解决方案,但它是问题的答案。
$array_1 = array();
$arraynumber = 0;
foreach($test_array as $item) {
  if($item[2] == $test_array[$y][2]) {
     $array_1[$arraynumber][] = $item;
     $z++;
  }elseif("Your Second statment"){
   echo 'Your second Task';
  }else{
    $arraynumber++;
    $y = $y+$z;
    $z=0;

    echo $item[2];
  }
}
$flag=0;
while(true) {
    while($cond) {
        if($cond2) {
            $flag=1;
            break;
        }
    }
    if($flag) break;
}