为什么这个for循环可以单独处理每个条件,而第一个条件放在一起就不重要了?
for ($j = 0; $j < 5 or $j < $synCount; $j++)
我只想循环五次或如果synCount小于此值。
hfsqlsce1#
您的意思可能是“$j在5***下和***$j在$sysCount下“,或者:
$j
$sysCount
$j < min(5, $sysCount)
hl0ma9xz2#
非常简单
bvjveswy3#
您可以使用break语句退出for循环:
break
for ($j = 0; $j < 5 ; $j++) { if( $j >= $synCount ) break; //treatment }
或者在循环之前计算您的限值:
$ max = $synCount < 5 ? $synCount : 5; for ($j = 0; $j < $synCount ; $j++) { //treatment }
另一个最快的解决方案:使用min():
min()
for ($j = 0; $j < min(5, $synCount) ; $j++) { //treatment }
mkh04yzy4#
试试这样:
$loopcount = ($syncount < 5) ? $syncount : 5; for ($j = 0; $j < $loopcount; ++$j) { }
第一行确定$syncount是否小于5,然后根据$syncount的值为$loopcount赋值。然后循环运行所需的次数。
$syncount
$loopcount
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)
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;
eanckbw97#
在for循环中使用逻辑运算符确实可以应用两个条件。例如,检查状态,直到它是 ok
for
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; }
7条答案
按热度按时间hfsqlsce1#
您的意思可能是“
$j
在5***下和***$j
在$sysCount
下“,或者:hl0ma9xz2#
非常简单
bvjveswy3#
您可以使用
break
语句退出for循环:或者在循环之前计算您的限值:
另一个最快的解决方案:使用
min()
:mkh04yzy4#
试试这样:
第一行确定
$syncount
是否小于5,然后根据$syncount
的值为$loopcount
赋值。然后循环运行所需的次数。s1ag04yj5#
或者稍微优化一下(但是我想5次或者更少的迭代就没有关系了)
另一个很好的解决方案
侧记
ejk8hzay6#
eanckbw97#
在
for
循环中使用逻辑运算符确实可以应用两个条件。例如,检查状态,直到它是 ok否则,您需要使用附加的 if 表达式和 break