6

为什么这个 for 循环可以单独处理每个条件,但第一个条件一起并不重要?

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

我只希望循环运行五次

或者

如果 synCount 小于这个值。

4

6 回答 6

13

您可能的意思是“ $j5 $j以下$sysCount”,或者:

$j < min(5, $sysCount)
于 2012-07-20T11:34:49.190 回答
2

很简单

$j < min(5, $sysCount)
于 2012-07-20T11:42:24.160 回答
0
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)
于 2012-07-20T11:37:07.030 回答
0

您可以使用该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
}
于 2012-07-20T11:34:43.160 回答
0

试试这样:

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

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

于 2012-07-20T11:34:54.323 回答
0
$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;
于 2015-02-24T12:45:39.863 回答