Я привык к этой нотации для создания пустых массивов и добавления именованных элементов к ним при необходимости;
$array = [];
// in case there is an error
$array["error"][] = "new error message as element 0 of $array['error']";
Теперь я узнал, что нотация [] для массивов не работает в старых версиях PHP, таких как PHP 5.2.
Вместо этого я должен сделать;
$array = array(
"error" => array()
);
array_push($array["error"], "new error message as element 0 of $array['error']");
Этот способ немного неудобен в моем случае, потому что отличительной особенностью первого фрагмента кода является то, что запись «error» в $array
создается только при наличии фактической ошибки, тогда как в последнем случае запись (хотя и пустая) существует в любом случае.
Есть ли способ получить аналогичную «функциональность» (то есть указание / добавление именованных элементов при необходимости, а не при инициализации) таким способом, который также легко читается в PHP 5.2?
РЕДАКТИРОВАТЬ:
Первый фрагмент кода в оригинальном сообщении читал $array = array[];
, Автор исправил это после того, как я разместил этот ответ.
Первый отсканированный код неверен. Там нет такого понятия, как array[]
, Правильный синтаксис array()
,
$array = array();
// in case there is an error
$array["error"][] = "new error message as element 0 of $array['error']";
Вам не нужно беспокоиться о версиях PHP. Этот синтаксис всегда работал на PHP с самого начала и, вероятно, будет работать вечно. Продолжайте использовать это.
Первый способ создания array
в PHP
это неверно. Этот синтаксис работает в PHP5.2
ниже, так что вам не нужно беспокоиться об этом. Вам не нужно использовать array_push
и просто сделайте следующее.
Правильный синтаксис:
$array = array(); // notice it doesn't to array[]
// add error when there is one
$array["error"][] = "new error message as element 0 of $array['error']";