Mysql
 sql >> база данни >  >> RDS >> Mysql

PHP - Строги стандарти:Само променливи трябва да се предават по референция

Проблемът е тук във вашия оператор if:

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

Не можете да подадете изхода на array_keys() по препратка, така че първо трябва да го присвоите на променлива, за да можете да го предадете по препратка. Като това:

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

Защо трябва да правите това?

Тъй като end() задава вътрешния указател на масива към последния елемент, така че прави това чрез препратка (ще забележите също, че не е нужно да присвоявате върнатата стойност на end, защото всичко се прави чрез препратка). Така че не можете да подадете върнатата стойност на array_keys() по препратка, защото можете да подадете следното само по препратка:

  • Променливи, т.е. foo($a)
  • Нови изрази, т.е. foo(new foobar())
  • Препратки, върнати от функции, т.е.:

Можете да прочетете повече за предаването чрез препратка в ръководството:http://php .net/manual/en/language.references.pass.php



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL поддържа ли историческа дата (като 1200)?

  2. JDBC Създаване на таблица Пример за използване

  3. MySQL:грешка в неизвестна колона в клаузата where

  4. Потребителско търсене в криптирани полета на базата данни

  5. MySQL / MariaDB не приема JSON формат? Не може да се създаде база данни