なぜこれはforループが各条件で単独で機能するのに、最初の条件は一緒に問題にならないのですか?
for ($j = 0; $j < 5 or $j < $synCount; $j++)
ループを5回だけ実行したい
また
synCountがこれよりも小さい場合。
なぜこれはforループが各条件で単独で機能するのに、最初の条件は一緒に問題にならないのですか?
for ($j = 0; $j < 5 or $j < $synCount; $j++)
ループを5回だけ実行したい
また
synCountがこれよりも小さい場合。
あなたはおそらく「$j
5歳未満と 」を意味します、または:$j
$sysCount
$j < min(5, $sysCount)
とてもシンプル
$j < min(5, $sysCount)
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
}
このようにしてみてください:
$loopcount = ($syncount < 5) ? $syncount : 5;
for ($j = 0; $j < $loopcount; ++$j) {
}
最初の行$syncount
は、が5未満かどうかを判断し、それに$loopcount
基づいて値を割り当てます。次に、ループは必要な回数実行されます。
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)
$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;