Esta es más una pregunta sobre por qué entonces 'cómo hacerlo', sin embargo, me ha estado molestando por algunos días. Actualmente estoy haciendo un trabajo con CodeIgniter y volviendo a PHP temporalmente de Ruby, me molesta sobre la siguiente magia de alcance.PHP, un ámbito de variable impar?
<?php $query = $this->db->get('articles', 2);
if ($query->num_rows() > 0)
{
foreach ($query->result_array() as $row)
{
$data[] = $row; # <-- first appearance here
}
return $data; # <--- :S what?!
}
Como se puede ver, no soy exactamente un gurú de PHP, sin embargo, la idea de que me molesta ámbito local que fuera del bucle foreach la variable está 'disponible'. Así que he intentado esto en el interior de una vista:
<?php
if($a==1)
{
$b = 2;
}
echo $b;
?>
que dan como resultado un mensaje de error:
Message: Undefined variable: b
El manual de PHP dice acerca de la determinación del alcance local, aún sigo preguntando por qué sucede esto y si hay son reglas especiales que no conozco. Y me da miedo :)
gracias por compartir ideas,
de crear la variable en el segundo ejemplo sólo si se 1. Desde $ A no existe (PHP realidad genera un error aquí), no se creará un $ $ b. En el primer ejemplo, se han cumplido todas las condiciones, por lo que $ data se crea y se usa como valor de retorno. –
El segundo ejemplo es más una aclaración/simplificación excesiva que $ b fuera de las llaves es accesible; como otras respuestas dicen, las llaves no definen el alcance de las variables. Y eso, no sabía :) – Shyam
Creo que esto está desactualizado ahora, o es una cuestión de ESTRICTAD tal vez. Su segundo ejemplo funciona para mí e imprime 2. Estoy trabajando con 5.4.16 con STRICT desactivado – Dennis