Das Problem liegt hier in Ihrer if-Anweisung:
end(array_keys($params['territories']))
Sie können die Ausgabe von array_keys()
nicht weitergeben als Referenz, also müssen Sie es zuerst einer Variablen zuweisen, um es als Referenz übergeben zu können. So:
$a = array_keys($params['territories']);
if ($key == end($a)) {
Warum müssen Sie das tun?
Denn end()
setzt den internen Zeiger des Arrays auf das letzte Element, also per Referenz (Sie werden auch feststellen, dass Sie den Rückgabewert von end nicht zuweisen müssen, da dies alles per Referenz erfolgt). Sie können also den Rückgabewert von array_keys()
nicht übergeben per Referenz, da Sie Folgendes nur als Referenz übergeben können:
- Variablen, also foo($a)
- Neue Anweisungen, z. B. foo(new foobar())
- Von Funktionen zurückgegebene Referenzen, z. B.:
Sie können mehr über das Weitergeben von Referenzen im Handbuch lesen:http://php .net/manual/en/language.references.pass.php