@aljo222
В процессе обучения веб-разработке

Что означает данная запись в PHP?

Здравствуйте!
Есть следующий код:
while (условие) {
                $k = $row['key'];
                if (!isset($options[$k])) {
                    $options[$k] = [$row['value']];
                } else {                   
}


Что делает данная строчка кода: $options[$k] = [$row['value']];. Т.е. именно интересно почему $row['value'] в квадратных скобках? Впервые такое вижу и ответ в интернете не могу найти.
  • Вопрос задан
  • 232 просмотра
Решения вопроса 3
В данном коде формируется массив в котором ключ массива задается из $row['key'], а значение из $row['value'].
$row['value'] в квадратных скобках для того, чтобы элемент массива был также массивом.

// исходная строка
$options[$k] = [$row['value']];
// означает то же самое, что
$options[$k] = array($row['value']);
// или
$options[$k][] = $row['value'];


В вашем случае используется короткий синтаксис для array(), который поддерживается с версии 5.4.
$array = array(
    "foo" => "bar",
    "bar" => "foo",
);

// Использование синтаксиса короткого массива
$array = [
    "foo" => "bar",
    "bar" => "foo",
];


Подробнее о массивах php здесь:
https://www.php.net/manual/ru/language.types.array.php
Ответ написан
Комментировать
Real_Fermer
@Real_Fermer
Программист PHP
Там где вы применяете $options - ожидается что елементы будут массивом. Поэтому и при присвоении значения и оборачивают значение в квадратные скобки, чтобы получить
$options[$k][0]=$row['value']
если так более понятно то модно сделать
if (!isset($options[$k])) {
          $options[$k][] = $row['value'];
     }
Ответ написан
Комментировать
sergiks
@sergiks Куратор тега PHP
♬♬
см. Массивы
Короткий синтакс массива заменяет array() на []

$options[$k] = [$row['value']];
// то же самое, что 
$options[$k] = array($row['value']);
Создаёт массив с единственным элементом. И присваивает его в $options[$k]

Ещё примеры:
$arr1 = [ 1, 2, 3 ];
// то же самое, что 
$arr1 = array(1, 2, 3);


$arr2 = [
    'Habr' => 'QnA',
    'Stack' => 'Overflow',
];
// то же самое, что 
$arr2 = array(
    'Habr' => 'QnA',
    'Stack' => 'Overflow',
);
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы