Mysql
 sql >> Database >  >> RDS >> Mysql

PHP - Standard rigorosi:solo le variabili devono essere passate per riferimento

Il problema è qui nella tua dichiarazione if:

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

Non puoi passare l'output di array_keys() per riferimento, quindi devi prima assegnarlo a una variabile per poterlo passare per riferimento. In questo modo:

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

Perché devi farlo?

Perché end() imposta il puntatore interno dell'array sull'ultimo elemento, quindi lo fa per riferimento (noterai anche che non devi assegnare il valore di ritorno di end, perché è tutto fatto per riferimento). Quindi non puoi passare il valore di ritorno di array_keys() per riferimento, perché puoi passare solo quanto segue per riferimento:

  • Variabili, ovvero foo($a)
  • Nuove istruzioni, ad es. foo(new foobar())
  • Riferimenti restituiti dalle funzioni, ovvero:

Puoi leggere di più sul passaggio per riferimento nel manuale:http://php .net/manual/en/language.references.pass.php