2012-07-20 32 views
5

¿Por qué este bucle funciona con cada condición por sí mismo, pero juntas la primera condición no importa?Dos condiciones en un bucle for

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

que sólo quieren que el bucle de ejecución cinco veces

o

si synCount es menor que este.

Respuesta

12

Probablemente significa "$j unde r 5 y$j bajo $sysCount", o:

$j < min(5, $sysCount) 
+0

no sabía nada de esta funcionalidad. ¡Más elegante que mi solución, buena! – hellsgate

+0

¡Encantador! Muchas gracias. – flux

0

Usted puede youse la declaración break dejar el bucle for:

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

o calcular su límite antes del bucle:

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

Otra solución, más rápida: utilizar min():

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

Trate de esta manera:

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

La primera línea determina si $syncount es inferior a 5 o no, y a continuación, asigna un valor a $loopcount en base a eso. Luego, el ciclo ejecuta la cantidad de veces requerida.

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

o ligeramente optimizado (pero supongo que con 5 o menos iteraciones este absolutamente no importa)

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

anothe soluciones agradables

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

sidenote

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

muy simple

$j < min(5, $sysCount) 
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; 
+1

Por favor, agregue algunos detalles sobre su respuesta. – emmanuel