Only variables should be passed by reference. PHP


Tenia un código que trabajaba bien antes:
$ext = end(explode('.', $files[$i]));

no mostraba ningún mensaje hasta que un día apareció esto.
Strict Standards: Only variables should be passed by reference in /basecentral/apache/web/aplicacion/protected/legacy/LegacyLoader.php on line 10. Esto se debió a que se actualizó php 5.2 del servidor a php 5.5. La solución fue la siguiente:
$tmp = explode('.', $files[$i]);
$ext = end($tmp);

Es decir almacenar el array resultante de la función explode en una variable y por ultimo pasárselo a la función end().
 

Esto es debido a que la función end según la documentación: end() avanza el puntero interno del array hasta su último elemento y devuelve su valor.

Este array es pasado por referencia porque es modificado por la función. Esto significa que se debe pasar una variable real y no una función que devuelve un array porque solamente variables puede ser pasadas por referencia.

Añadir nuevo comentario