Mysql
 sql >> Baza danych >  >> RDS >> Mysql

PHP — rygorystyczne standardy:tylko zmienne powinny być przekazywane przez referencję

Problem tkwi w twoim oświadczeniu if:

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

Nie możesz przekazać wyjścia array_keys() przez referencję, więc musisz najpierw przypisać ją do zmiennej, aby móc przekazać ją przez referencję. Tak:

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

Dlaczego musisz to zrobić?

Ponieważ end() ustawia wewnętrzny wskaźnik tablicy na ostatni element, więc robi to przez referencję (zauważysz też, że nie musisz przypisywać wartości zwracanej przez end, ponieważ wszystko odbywa się przez referencję). Więc nie możesz przekazać wartości zwracanej przez array_keys() przez odniesienie, ponieważ przez odniesienie można przekazać tylko następujące elementy:

  • Zmienne, np. foo($a)
  • Nowe instrukcje, np. foo(new foobar())
  • Odwołania zwrócone z funkcji, np.:

Możesz przeczytać więcej o przekazywaniu przez odniesienie w podręczniku: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. automatycznie aktualizuje pole mysql na podstawie wartości innego pola

  2. mysql wiele wierszy do jednego wiersza

  3. Błąd zapytania SQL — kolumna nie może być pusta

  4. Zapisywanie 30-lut na Mysql (formatowanie daty)

  5. Saldo kredytu otwartego MySQL Saldo debetowe