2010-04-07 12 views
10

¿Cuáles son las diferencias entre el bucle for y el bucle foreach en PHP?¿cuál es la diferencia entre para bucle y para cada bucle en php

+3

* (de referencia) * http://de2.php.net/manual/en /control-structures.for.php y http://de2.php.net/manual/en/control-structures.foreach.php – Gordon

+1

Le sugiero que consulte algunos documentos sobre ambos tipos de bucles. Hay algunas diferencias fundamentales. ¿O tienes un problema específico? De ser así, aclare en su pregunta. –

Respuesta

1

Debe ser bastante simple

foreach abstrae parte de la complejidad y por lo general es más fácil. Lo uso cuando no necesito saber el índice numérico de la matriz o $key => $value no me lo proporcionará.

for es el estilo C más antiguo donde primero debe realizar un count() para saber cuántas iteraciones requiere el ciclo. Es útil cuando necesita conocer el índice, o contar hacia atrás o avanzar en diferentes grupos.

+1

'expr2' en un' for' puede ser lo que considere la condición final. No tiene que ser 'count()'. Por ejemplo, con un iterador puede hacer 'for ($ it-> rewind(); $ it-> valid(); $ it-> next()) {/ * ... * /}', pero podría también puede ser una devolución de llamada, consulta db, lo que sea. – Gordon

+1

@Gordon: estaba a punto de decir algo similar. Todos aquí parecen pensar que los bucles 'for' solo se pueden usar con números ... –

+0

@Felix @Gordon Bueno, traté de hacerlo un simple ejemplo para recorrer una matriz.Pero gracias por tu aporte. – alex

0

Foreach es básicamente un atajo para hacer la siguiente

//Foreach method 
foreach ($myArray as $myVar) 
{ 
} 

//Normal for equivalent 
for ($i = 0; $i < $limit; $i++) 
{ 
$myVar = $myArray[$i]; 
} 

Pero hay otros temas también, read this artículo sobre el tema

13

Foreach es ideal para la iteración a través de las matrices que utilizan claves y valores.

Por ejemplo, si tuviera una matriz llamada 'Usuario':

$User = array(
    'name' => 'Bob', 
    'email' => '[email protected]', 
    'age' => 200 
); 

pude recorrer muy fácilmente y seguir haciendo uso de las teclas:

foreach ($User as $key => $value) { 
    echo $key.' is '.$value.'<br />'; 
} 

Esto imprimiría :

name is Bob 
email is [email protected] 
age is 200 

con for bucles, es más difícil conservar el uso de las teclas .

Cuando está utilizando la práctica orientada a objetos en PHP, encontrará que utilizará foreach casi por completo, con for bucles solo para cosas numéricas o basadas en listas. foreach también le impide tener que usar count($array) para encontrar la cantidad total de elementos en la matriz.

0

foreach siendo utilizados para iterar matrices y nada más.
for es el bucle de propósito general basado en contador

+1

A partir de PHP 5, es posible iterar objetos también. – Gordon

1

Un bucle "for" le da un número incremental (en su uso más común), que se puede utilizar cualquier forma que desee.

"foreach" es una construcción especial hecha para observar a los miembros sucesivos de una matriz.

A modo de ejemplo, se puede utilizar un bucle "for" para crear algo que hace lo mismo que "foreach". Pero Foreach lo hace con menos código requerido.

+1

'for' solo le proporciona un número creciente si lo definió para hacerlo. Las expresiones utilizadas en un 'for' son arbitrarias. – Gordon

3

foreach es específicamente para iterar sobre elementos de una matriz o un objeto.

for es por hacer algo ... cualquier cosa ... que tiene una condición de inicio definido, deja de condiciones, y las instrucciones de iteración.

Por lo tanto, for se puede utilizar para una gama mucho más amplia de cosas. De hecho, sin la tercera expresión, sin las instrucciones de iteración, un for se convierte en while.

Ejemplos:

// Typical use of foreach 
// It's strength is iterating over arrays & objects 
$people = array("Tom", "Dick", "Hairy"); 

foreach ($people as $person) { 
    echo "$person <br/>"; } 

Working example

Ahora usted podría hacer exactamente lo mismo con for, pero ¿por qué molestarse? En lugar for se pueden utilizar para cosas completamente diferentes:

// Prints random names from array until Hairy is picked 
for ($people = array("Tom", "Dick", "Hairy"); // initial condition 
    $people[0] != "Hairy";     // stop condition 
    shuffle($people)       // iteration instructions 
    ) { 
    echo "$people[0] <br/>"; 
} 

Working example

La condición inicial se realiza antes del bucle for una vez, no importa qué. Si la condición de parada se evalúa a false, el ciclo se detendrá inmediatamente. Las instrucciones de cambio se realizan al final de cada ciclo. Tenga en cuenta que las instrucciones de cambio no tienen que ser incrementos.

Aquí hay un ejemplo de cómo convertir un bucle for en un bucle while al omitir las instrucciones de iteración.

// Does the loop a random number of times. 
// No thired expression 
for ($rand = function() {$array = array(true, true, true, true, false); 
     shuffle($array); 
     return $array; 
     };     
    current($rand()); 
    // empty third expression 
) { 

    echo "I bring nothing to the table.<br/>"; 
} 

Working example

0

Mejor y respuesta fácil es: Diferencia entre Foreach y de bucles: -

1. Foreach Loop:- Details are following. 
    a) Foreach loop used when you have an array, without array it's not worked. 
    b) Loop working at the end of array count. For example an array have 5 value 
    then loop run 5 times. 
    c) Syntax is following. 
     $array = array("Surinder","Rahul","Manoj","Bharti","Rana","Manish");  
     Foreach($array as $name){ 
     echo "Employe Name is ".$name."."; 
     } 
    This will print as following. 
    Employe Name is Surinder. 
    Employe Name is Rahul. 
    Employe Name is Manoj. 
    Employe Name is Bharti. 
    Employe Name is Rana. 
    Employe Name is Manish. 



2. For Loop:- Details are following. 
    a) For loop used according to condition. 
    b) Loop working at the end of given condition. 
    c) Syntax is following. 
     $array = array("Surinder","Rahul","Manoj","Bharti","Rana","Manish"); 
     For($i=0;$i<6;$i++){ 
      echo "Employe Name is ".$array[$i]."; 
     } 
    At the place of 6,You can used count array function. 
    This will print as following. 
    Employe Name is Surinder. 
    Employe Name is Rahul. 
    Employe Name is Manoj. 
    Employe Name is Bharti. 
    Employe Name is Rana. 
    Employe Name is Manish. 
    These are the difference between Foreach and for loop. 

Para más información ir allí: http://ibmphp.blogspot.com/2012/10/difference-between-foreach-and-for-loop.html

0

para bucle es utilizado si ya sabemos que cuántas veces se debe ejecutar el script pero en el caso de foreach loop, no tenemos ninguna idea sobre el número de iteraciones.

También foreach bucle se utiliza para iterar sólo arrays y objetos.

Puede consultar el enlace para entender mejor la diferencia entre para y foreach bucle -

https://www.quora.com/What-is-the-difference-between-for-and-foreach-in-php

Cuestiones relacionadas