PHP Array – скобки

кто-то знает значение [] при создании массива 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 [] может добавлять значения к уже существующим массивам.
  • $ var [] создаст массив и фактически будет тем же самым вызовом функции, что и $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 )