Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

PHP - Padrões estritos:Somente variáveis ​​devem ser passadas por referência


O problema está aqui na sua declaração if:
end(array_keys($params['territories']))

Você não pode passar a saída de array_keys() por referência, então você deve primeiro atribuí-lo a uma variável para poder passá-lo por referência. Assim:
$a = array_keys($params['territories']);
if ($key == end($a)) {

Por que você tem que fazer isso?

Porque end() define o ponteiro interno do array para o último elemento, então ele faz isso por referência (você também notará que não precisa atribuir o valor de retorno de end, porque tudo é feito por referência). Então você não pode passar o valor de retorno de array_keys() por referência, porque você só pode passar o seguinte por referência:
  • Variáveis, ou seja, foo($a)
  • Novas declarações, ou seja, foo(new foobar())
  • Referências retornadas de funções, ou seja:

Você pode ler mais sobre a passagem por referência no manual:http://php .net/manual/en/language.references.pass.php