sql >> Databáze >  >> RDS >> Mysql

PHP - Přísné standardy:Pouze proměnné by měly být předány odkazem

Problém je zde ve vašem příkazu if:

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

Nemůžete předat výstup array_keys() odkazem, takže jej musíte nejprve přiřadit proměnné, abyste jej mohli předat odkazem. Takhle:

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

Proč to musíte udělat?

Protože end() nastaví vnitřní ukazatel pole na poslední prvek, takže to udělá odkazem (také si všimnete, že nemusíte přiřazovat návratovou hodnotu end, protože se to vše provádí odkazem). Nemůžete tedy předat návratovou hodnotu array_keys() odkazem, protože odkazem můžete předat pouze následující:

  • Proměnné, tj. foo($a)
  • Nové příkazy, tj. foo(new foobar())
  • Reference vrácené z funkcí, tj.:

Více o předávání odkazem si můžete přečíst v manuálu:http://php .net/manual/en/language.references.pass.php



  1. Jak spojit pouze jeden řádek ve spojené tabulce s postgres?

  2. VYBERTE několik záznamů pro každý DISTINCT jeden v jediném dotazu

  3. Nasazení replikace MariaDB pro vysokou dostupnost

  4. Použité příkazy SELECT mají různý počet sloupců