1

Me encuentro trabajando con PHP, pero como vengo de trabajar con C# (lenguajes muy distintos). Y como saben, C# es muy estricto a la hora de declarar variables.

Mi cuestión es la siguente: Tengo un bucle foreach que recorre un array en php, por ejemplo:

foreach($array as $i => $item){
  $nueva_variable = $item["key"];
}

echo $nueva_variable;

En este caso, según mi lógica en C#, no podría imprimir la variable $nueva_variable ya que solo puede ser usada dentro del bloque en donde se creó.

Pero en php al parecer no tiene problema por eso, y puede imprimir el valor de la variable incluso si se llama fuera del bloque de donde fue creada.

Por lo tanto eso es lo que aún no termino de entender, el porqué de ese comportamiento, no se me ocurre alguna explicación. Yo creía que por lógica todos los lenguajes aplicaban la misma "regla" con la que c#, java, etc, trabajan.

valle50
  • 1,023
  • 8
  • 24
  • 1
    Sugiero que la persona que votó como "basada en opiniones" retire su reporte, ya que no tiene nada qué ver con "opiniones", cuando estoy buscando una respuesta en base a un comportamiento de variables dentro de bloques de código. – valle50 Oct 30 '21 at 18:36
  • 1
    Échale un vistazo a esta respuesta https://es.stackoverflow.com/a/118598/38103 – Xerif Nov 04 '21 at 08:41

1 Answers1

5

Tiene que ver con el ámbito de las variables. PHP declara sus ámbitos por función, clase o de manera global. Esto implica que se puedan crear variables dentro de bloques como foreach o if y llamarlas por fuera sin ningún problema. Así está construido el lenguaje. Aquí se explican a detalle los ámbitos.

anscharivs
  • 106
  • 4