php for循环中的两个条件

iq3niunx  于 2023-02-21  发布在  PHP
关注(0)|答案(7)|浏览(268)

为什么这个for循环可以单独处理每个条件,而第一个条件放在一起就不重要了?

for ($j = 0; $j < 5 or $j < $synCount; $j++)

我只想循环五次

如果synCount小于此值。

hfsqlsce

hfsqlsce1#

您的意思可能是“$j在5***下和***$j$sysCount下“,或者:

$j < min(5, $sysCount)
hl0ma9xz

hl0ma9xz2#

非常简单

$j < min(5, $sysCount)
bvjveswy

bvjveswy3#

您可以使用break语句退出for循环:

for ($j = 0; $j < 5 ; $j++)
{
   if( $j >= $synCount )
      break;
   //treatment
}

或者在循环之前计算您的限值:

$ max = $synCount < 5 ? $synCount : 5;
for ($j = 0; $j < $synCount  ; $j++)
{
   //treatment
}

另一个最快的解决方案:使用min()

for ($j = 0; $j < min(5, $synCount)  ; $j++)
{
   //treatment
}
mkh04yzy

mkh04yzy4#

试试这样:

$loopcount = ($syncount < 5) ? $syncount : 5;
for ($j = 0; $j < $loopcount; ++$j) {
}

第一行确定$syncount是否小于5,然后根据$syncount的值为$loopcount赋值。然后循环运行所需的次数。

s1ag04yj

s1ag04yj5#

for ($j = 0; $j < ($syncCount <= 5 ? $syncCount : 5); $j++)

或者稍微优化一下(但是我想5次或者更少的迭代就没有关系了)

for ($j = 0, $limit = min($syncCount, 5); $j < $limit; $j++)

另一个很好的解决方案

foreach (range(0, min($syncCount, 5)) as $j)

侧记

$syncCount <= 5 ? $syncCount : 5  ==  min($syncCount, 5)
ejk8hzay

ejk8hzay6#

$productsprice=ProductPrice::model()->findAllByAttributes(array ('product_id'=>$products_data->product_id));
foreach($productsprice AS $productsprice):
   for($quantity = 0; $quantity <= 10; $quantity++)
   {
      echo '<li >'.array(value=>'ProductPrice::model()->getquantity($data->quantity)').'</li>' ;
   }
 endforeach;
eanckbw9

eanckbw97#

for循环中使用逻辑运算符确实可以应用两个条件。例如,检查状态,直到它是 ok

for($i = 0; $i < 100 && $status != 'ok'; $i++){
    sleep(1);
    $status = checkStatus();
}

否则,您需要使用附加的 if 表达式和 break

for($i = 0; $i < 100; $i++){
    sleep(1);
    $status = checkStatus();
    if($status == 'ok') break;
}

相关问题