6

なぜこれはforループが各条件で単独で機能するのに、最初の条件は一緒に問題にならないのですか?

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

ループを5回だけ実行したい

また

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

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
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
$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 に答える