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