Vấn đề là ở đây trong câu lệnh if của bạn:
end(array_keys($params['territories']))
Bạn không thể chuyển đầu ra của array_keys()
bằng tham chiếu, vì vậy trước tiên bạn phải gán nó cho một biến để có thể chuyển nó bằng tham chiếu. Như thế này:
$a = array_keys($params['territories']);
if ($key == end($a)) {
Tại sao bạn phải làm điều này?
Bởi vì end()
đặt con trỏ bên trong của mảng thành phần tử cuối cùng, vì vậy nó thực hiện điều này bằng cách tham chiếu (bạn cũng sẽ nhận thấy rằng bạn không phải gán giá trị trả về là end, vì tất cả được thực hiện bằng tham chiếu). Vì vậy, bạn không thể chuyển giá trị trả về của array_keys()
bằng cách tham khảo, bởi vì bạn chỉ có thể chuyển những điều sau bằng cách tham chiếu:
- Các biến, tức là foo ($ a)
- Các câu lệnh mới, tức là foo (new foobar ())
- Các tham chiếu được trả về từ các hàm, tức là:
Bạn có thể đọc thêm về cách chuyển bằng cách tham khảo trong sách hướng dẫn: http://php .net / manual / en / language.references.pass.php