Only variables should be passed by reference. PHP

Enviado por peter el Mar, 24/02/2015 - 08:56

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

Filtered HTML

  • Falta el filtro. Se eliminará todo el texto
  • Las direcciones de correos electrónicos y páginas web se convierten en enlaces automáticamente.
  • Etiquetas HTML permitidas: <a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd><php>
  • Saltos automáticos de líneas y de párrafos.