кто-то знает значение [] при создании массива PHP, и если это действительно необходимо. Безусловно, с моей точки зрения. Оба способа являются достаточными
Путь 1, с кронштейнами:
$cars[] = array ('expensive' => $BMW, 'medium' => $Volvo, 'cheap' => $Lada);
Way2, без скобок:
$cars = array ('expensive' => $BMW, 'medium' => $Volvo, 'cheap' => $Lada);
Прочтите http://php.net/manual/en/function.array-push.php для получения четкого ответа относительно различий.
Основные отличия:
array()
может быть выполнено только при создании переменной. $var = array(...);
также
$var[]
(см. Пример 4 ниже) . некоторые работы:
1) Использование array()
$cars = "cats"; $cars = array("cars","horses","trees"); print_r($cars) ;
Выйдет
$cars --> [0] = cars [1] = horses [2] = trees
2) Добавление значений
Затем записываем $cars = array("goats");
НЕ добавит значение, но вместо этого инициализирует NEW ARRAY, давая:
$cars --> [0] = goats
Но если вы используете квадратные скобки для добавления, то запись $cars[] = "goats"
даст вам:
$cars --> [0] = cars [1] = horses [2] = trees [3] = goats
Ваш исходный вопрос означает, что все, что находится в правой части знака =
будет добавлено к текущему массиву, если левая сторона имеет синтаксис $var[]
но это будет добавляться численно . Как показано выше.
Вы можете добавлять вещи по ключевым словам, заполняя ключевое значение: $cars['cheap'] = $Lada;
,
В вашем примере 1 указано, что массив хранится внутри массива, поэтому для доступа к значению $ Lada вы будете ссылаться на $cars[0]['cheap']
. Пример 2 устанавливает массив, но перезаписывает любой существующий массив или значение в переменной.
3) Строка и числовое индексирование
Метод использования синтаксиса array(...)
хорош для определения нескольких значений при создании массива, когда эти значения имеют нечисловые или числовые нелинейные ключи, например ваш пример:
$cars = array ('expensive' => "BMW", 'medium' => "Volvo", 'cheap' => "Lada");
Будет выводиться в массиве:
$cars --> ['expensive'] = BMW ['medium'] = Volvo ['cheap'] = Lada
Но если вы использовали альтернативный синтаксис:
$cars[] = "BMW"; $cars[] = "Volvo"; $cars[] = "Lada";
Это приведет к выводу:
$cars --> [0] = BMW [1] = Volvo [2] = Lada
4) Я все еще пишу ….
В качестве другого примера: вы можете комбинировать эффекты использования array()
и $var[]
с объявлениями ключевых слов в квадратных скобках, таким образом:
$cars['expensive'] = "BMW"; $cars['medium'] = "Volvo"; $cars['budget'] = "Lada";
давая:
$cars --> ['expensive'] = BMW ['medium'] = Volvo ['cheap'] = Lada
(мой оригинальный ответ был многословным и не очень большим).
5) Наконец …..
Итак, что происходит, когда вы объединяете два стиля, смешивая объявление array()
с дополнениями $var[]
:
$ray = array("goats" => "horny", "knickers" => "on the floor", "condition" => "sour cream"); $ray[] = "crumpet"; $ray[] = "bread";
Это будет поддерживать как числовые, так и строковые индексы в массиве, выводящие с помощью print_r()
:
$ray --> [goats] => horny [knickers] => on the floor [condition] => sour cream [0] => crumpet [1] => bread
Они разные. Первый – это массив внутри другого
$cars[] = array ('expensive' => "BMW", 'medium' => "Volvo", 'cheap' => "Lada");
var_dump ($ автомобилей);
array (size=1) 0 => array (size=3) 'expensive' => string 'BMW' (length=3) 'medium' => string 'Volvo' (length=5) 'cheap' => string 'Lada' (length=4)
Второй – это просто массив
$cars = array ('expensive' => "BMW", 'medium' => "Volvo", 'cheap' => "Lada");
var_dump ($ автомобилей);
array (size=3) 'expensive' => string 'BMW' (length=3) 'medium' => string 'Volvo' (length=5) 'cheap' => string 'Lada' (length=4)
путь 1 приводит к массиву со значениями массива (массив массива), тогда как way2 – это массив, который содержит указанные значения
Путь 1 добавляет ваш новый array()
в конец существующего массива. Итак, если у вас уже есть 2 элемента внутри этого массива, будет создан третий с указанным вами массивом.
Путь 2 – это типичное создание массива – просто для заполнения полей используются некоторые другие переменные.
Просто для завершения упражнения, вот путь 3:
$arr = array(); $arr[1] = array("foo"=>"bar");
Это помещает массив foo:bar
в позицию №1 в переменную $arr
.
Второй пример ясен. В первом примере вы добавляете элемент массива без указания его ключа, следовательно, пустые скобки []
. Поскольку массив еще не инициализирован, он создается одновременно. В результате, как уже указывалось другими, результат – многомерный массив.
Остерегайтесь, однако, что первый способ не поощряется :
Если $ arr еще не существует, он будет создан, поэтому это также альтернативный способ создания массива. Однако эта практика не приветствуется, потому что если $ arr уже содержит некоторое значение (например, строку из переменной запроса), то это значение останется на месте, а
[]
может фактически стоять за оператором доступа к строке. Всегда лучше инициализировать переменную прямым назначением.
Если $cars
уже установлено, например, в строку, вы получите ошибку.
$cars = 'test'; $cars[] = array ('expensive' => $BMW, 'medium' => $Volvo, 'cheap' => $Lada);
Метод 1 с скобками: многомерный массив
Array ( [0] => Array ( [expensive] => 12 [medium] => 13 [cheap] => 14 ) )
Метод 2 с помощью скобок: ассоциативный массив
Array ( [expensive] => 12 [medium] => 13 [cheap] => 14 )