De forma predeterminada, cuando se está dentro de una función, no tiene acceso a las variables externas.
Si usted quiere que su función para tener acceso a una variable externa, tiene que declarar como global
, dentro de la función:
function someFuntion(){
global $myArr;
$myVal = //some processing here to determine value of $myVal
$myArr[] = $myVal;
}
Para más información, ver Variable scope.
Pero tenga en cuenta que utilizando variables globales no es una buena práctica: con esto, su función ya no es independiente.
Una mejor idea sería la de hacer su función devolver el resultado:
function someFuntion(){
$myArr = array(); // At first, you have an empty array
$myVal = //some processing here to determine value of $myVal
$myArr[] = $myVal; // Put that $myVal into the array
return $myArr;
}
y llamar a la función como esta:
$result = someFunction();
Su función también podría tomar parámetros , e incluso trabajan en un parámetro pasado por referencia:
function someFuntion(array & $myArr){
$myVal = //some processing here to determine value of $myVal
$myArr[] = $myVal; // Put that $myVal into the array
}
A continuación, llamar a la función como esta:
$myArr = array(...);
someFunction($myArr); // The function will receive $myArr, and modify it
Con esta:
- Su función que se recibe la matriz externa como un parámetro
- Y puede modificarlo, ya que es pasado por referencia.
- Y es una mejor práctica que usar una variable global: su función es una unidad, independiente de cualquier código externo.
Para más información sobre esto, debe leer la sección Functions del manual de PHP, y ,, en particular, las siguientes subsecciones:
¿Qué pasa con todos los votos a la baja? – PatrikAkerstrand
@Machine: una buena pregunta ^^ * (Desde entonces, he editado mi respuesta un par de veces para agregar más información, tal vez fue downvoted porque no está lo suficientemente completo, al principio ... Probablemente tiene algo que ver con global, que a la gente no le gusta ...) * –
@Machine Mr Anti-Global @Coronatus ha decidido que las respuestas perfectamente viables son incorrectas. Y su representante de 1.662 lo hace bien ... –