Notice: Only variables should be passed by reference usando la función end de PHP.

Tiempo de lectura estimado: < 1 minuto

Seguro que muchos de vosotros os habéis topado con un aviso como el del título: Notice: Only variables should be passed by reference.  Uno de los tantos avisos que podemos tener mientras trabajamos con PHP.

Es un notice, no pasa nada.

Sí , si pasa. Y más si trabajamos en producción. Este tipo de errores, han de subsanarse y no parchearse con un error_reporting(0);  y que sea lo que dios quiera.

Curiosamente estaba trasteando un tutorial sobre uploader multiple de imágenes y me he topado con ese pequeño código que tanto me irritaba a los ojos durante el tutorial:

$ext = end((explode(".", $filename)));

Esto va a funcionar, pero va a tirar un notice como una catedral. Y todo por no leerse bien la documentación de PHP que no es precisamente escasa.

Dicha función , hace lo siguiente:

end — Set the internal pointer of an array to its last element

Y aún hay mas:

end (array  &$array) :  mixed

Y aún asi, nos avisa de:

The array. This array is passed by reference because it is modified by the function. This means you must pass it a real variable and not a function returning an array because only actual variables may be passed by reference.

Vamos que nos dice con toda las de la ley , que no podemos usar una función que retorne un array si no una variable que puede ser pasada por referencia.

Y como solventamos dicho error?.

Pues tan fácil como asignar una variable a la función explode() y luego pasar dicha variable a la función end().

$tmp = explode(".", $filename);
$ext = end($tmp); //Le pasamos la variable, no la función.

Y con esto, ya tenemos el pequeño problema arreglado.

Saludos!.

1 comentario en «Notice: Only variables should be passed by reference usando la función end de PHP.»

Deja un comentario

© 2024 - Serna Studio

Si continuas utilizando este sitio aceptas el uso de cookies. más información

Los ajustes de cookies de esta web están configurados para "permitir cookies" y así ofrecerte la mejor experiencia de navegación posible. Si sigues utilizando esta web sin cambiar tus ajustes de cookies o haces clic en "Aceptar" estarás dando tu consentimiento a esto.

Cerrar