sql >> Base de Datos >  >> RDS >> Mysql

PHP - Estándares estrictos:solo las variables deben pasarse por referencia

El problema está aquí en su declaración if:

end(array_keys($params['territories']))

No puede pasar la salida de array_keys() por referencia, por lo que primero hay que asignarlo a una variable para poder pasarlo por referencia. Así:

$a = array_keys($params['territories']);
if ($key == end($a)) {

¿Por qué tienes que hacer esto?

Porque end() establece el puntero interno de la matriz en el último elemento, por lo que lo hace por referencia (también notará que no tiene que asignar el valor de retorno de fin, porque todo se hace por referencia). Entonces no puede pasar el valor de retorno de array_keys() por referencia, porque solo puede pasar lo siguiente por referencia:

  • Variables, es decir, foo($a)
  • Nuevas sentencias, es decir, foo(new foobar())
  • Referencias devueltas de funciones, es decir:

Puede leer más sobre pasar por referencia en el manual:http://php .net/manual/en/language.references.pass.php