Problemet finns här i ditt if-uttalande:
end(array_keys($params['territories']))
Du kan inte skicka utdata från array_keys()
genom referens, så du måste först tilldela den till en variabel för att kunna skicka den genom referens. Så här:
$a = array_keys($params['territories']);
if ($key == end($a)) {
Varför måste du göra det här?
Eftersom end()
ställer in den interna pekaren för arrayen till det sista elementet, så den gör detta genom referens (du kommer också att märka att du inte behöver tilldela returvärdet för end, eftersom det hela görs genom referens). Så du kan inte skicka returvärdet för array_keys()
genom referens, eftersom du bara kan skicka följande genom referens:
- Variabler, dvs foo($a)
- Nya uttalanden, dvs foo(new foobar())
- Referenser som returneras från funktioner, dvs.:
Du kan läsa mer om att passera genom referens i manualen:http://php .net/manual/en/language.references.pass.php