Синтаксис массива PHP с [] против {}

Я использую PHP для работы с API, который требует от меня определения таких массивов:

$array = [ "A" => [ [ "AA" => "Z" ], [ "BB" => "Z" ] ], "B" => "Z" ];

Когда я жестко запрограммирую значения, нет проблем, но как правильно воссоздать эту структуру массива с переменными?

Что-то типа:

$array = array('A' => array('AA' => 'Z','BB' => 'Z'),'B' => 'Z'); ?

Или я должен использовать фигурные скобки или что-то еще?

Мне нужно иметь возможность отправлять в API правильно отформатированную переменную, а не просто значения жесткого кода.

Нет никакой разницы между использованием квадратных скобок и использованием функции array(). Вы можете использовать переменные в обоих.

Barmar 18.03.2019 23:04

Фигурные скобки не используются для массивов в PHP.

Barmar 18.03.2019 23:05

«правильно отформатированная переменная для API» звучит так, как будто вы ищете JSON — если это то, что вам нужно, то json_encode($array) даст вам «фигурные скобки»...

Apps-n-Add-Ons 18.03.2019 23:08

Ваши два массива не эквивалентны. В первом A указывает на двумерный массив, во втором — на один ассоциативный массив.

Barmar 18.03.2019 23:09

@Barmar, на самом деле, вы можете использовать фигурные скобки для доступа к массиву: 3v4l.org/BZ7tp

krlv 18.03.2019 23:09

@krlv Но он говорит о создании массивов, а не о доступе к ним. Обозначение, которое вы показали, не рекомендуется, я думаю, что это просто какая-то древняя вещь совместимости.

Barmar 18.03.2019 23:10

@krlv И, насколько мне известно, этот синтаксис недокументирован, я не знаю, поддерживается ли он официально. Это больше мелочи, чем что-либо еще.

Barmar 18.03.2019 23:12

@ Бармар Правда. Кроме того, я надеюсь, что скоро он будет устаревшим: wiki.php.net/rfc/deprecate_curly_braces_array_access

krlv 18.03.2019 23:13
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
8
351
1

Ответы 1

array() и [] эквивалентны, за исключением того, что краткая форма поддерживается только в PHP 5.4 или новее.

Фигурные скобки {} не связаны с массивами, это совершенно другое, и их не следует смешивать.

В качестве «странной заметки» (и что привлекло меня к этому вопросу) — буквально вчера я боролся с проблемой, используя только [] — хостинговая компания (HostGator) не принимает [] в своей версии (кажется, они изменяют ее.. . :( PHP 5.4, 5.5 или 5.6...... Нам нужно обновить клиентский сервер и перейти на 7.X, но другое программное обеспечение останавливает его - и промежуточный материал использует [], что дает ошибки...... (AAARRRGGGHHHH!) поэтому мне, возможно, придется изменить тысячи [] на array() только для того, чтобы быть совместимым с хостинговой компанией!(да, я рекомендовал изменить.... :)

Apps-n-Add-Ons 18.03.2019 23:18

Я очень сомневаюсь, что кто-то модифицировал php, чтобы не поддерживать эту функцию, так как это было бы действительно очень глупо. И если вы правы (опять же, я в этом сомневаюсь), то последнее, о чем я бы подумал, это модифицировать какое-либо из моих программ вместо того, чтобы переходить к обычному провайдеру с неповрежденным PHP.

Marcin Orlowski 18.03.2019 23:24

Другие вопросы по теме