Php 在for循环中重新循环数组项
我有一个for循环,用于检查条件,我想知道在对变量进行一些更改后,如果某个项不满足条件,是否可以通过该循环重新运行该项。 是否可以在else语句中添加一些内容,以允许我在新条件下重新运行相同的$itemPhp 在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][] =
$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;
}