La función en PHP no devuelve el valor de mi Array, ¿por qué?
Frecuentes
Visto 756 veces
1
Tengo un pequeño fragmento de código y no puedo hacerlo funcionar.
$dict = array('401003' => "Test")
function getID ($tempid) {
$id = '<span title="'.$tempid.'">'.$dict[$tempid].'</span>';
return $id;
}
echo getID('401003');
echo $dict['401003'];
Esperaba obtener la 'Prueba' dos veces, pero solo el segundo eco me devolvió la 'Prueba'. Algo parece estar mal con $dict[$tempid] en la función
¿Pueden ayudarme por favor?
2 Respuestas
6
Esto tiene que ver con el Alcance variable, no tienes acceso a la $dict
variable dentro de su función. Puede evitar esto declarando $dict
como global, o pasándolo a su función, podría refactorizarlo así:
function getID($tempId, $dict) {
return '<span title="'.$tempid.'">'.$dict[$tempid].'</span>';
}
contestado el 22 de mayo de 12 a las 14:05
3
getID no ve su matriz, debe agregarla como parámetro o hacer que $dict sea global, lo que generalmente es una mala idea:
$dict = array('401003' => "Test")
function getID ($tempid) {
global $dict;
$id = '<span title="'.$tempid.'">'.$dict[$tempid].'</span>';
return $id;
}
contestado el 22 de mayo de 12 a las 14:05
¿Puedes explicar por qué hacerlo global sería una mala idea? - Andreas Daoutis
Si tiene demasiadas variables globales, puede perder la noción de lo que se usa y dónde, y luego obtener dos referencias de variables con el mismo nombre (referencia) sin saberlo. Esto conducirá a un comportamiento inesperado en el que una parte del código lo actualiza sin darse cuenta de que otra parte también lo está usando. - Brad
ok eso es un buen punto, pero creo que no es un problema real. especialmente no para mí, porque es un archivo php muy pequeño, pero gracias por tu respuesta. - Andreas Daoutis
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas php arrays return echo or haz tu propia pregunta.
ok, no sabía eso, soy nuevo en php, vengo de java y javascript... pero lo entiendo, ¡gracias! - Andreas Daoutis