Mysql
 sql >> Base de données >  >> RDS >> Mysql

PHP - Normes strictes :seules les variables doivent être passées par référence

Le problème est ici dans votre instruction if :

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

Vous ne pouvez pas transmettre la sortie de array_keys() par référence, vous devez donc d'abord l'affecter à une variable pour pouvoir la passer par référence. Comme ceci :

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

Pourquoi tu dois faire ça ?

Parce que end() définit le pointeur interne du tableau sur le dernier élément, il le fait donc par référence (vous remarquerez également que vous n'avez pas à affecter la valeur de retour de end, car tout est fait par référence). Vous ne pouvez donc pas passer la valeur de retour de array_keys() par référence, car vous ne pouvez passer que par référence :

  • Variables, par exemple foo($a)
  • Nouvelles instructions, par exemple foo(new foobar())
  • Références renvoyées par les fonctions, c'est-à-dire :

Vous pouvez en savoir plus sur le passage par référence dans le manuel :http://php .net/manual/en/language.references.pass.php