Назначение вторых квадратных скобок в этом PHP-коде

#php

#php

Вопрос:

Есть ли базовое объяснение или ресурс о том, что делают вторые квадратные скобки — [$i] — в этом операторе if в третьей строке?

И пока я здесь.. Что означает больше или равно значению в функции массива? Его целью является создание массива, если установлен любой из четырех флажков.

 $passtime = array("beachwalks"=>0,"gardening"=>0,"playingsports" =>0,"other"=>0);
for($i=0; $i < count($pastime); $i  ) {
    if(isset($_POST["pastime"][$i])) {
        $pastime[$_POST["pastime"][$i]] = 1;
  

Комментарии:

1. Это индекс массива. $_POST['pastime'] является массивом.

2. Это не больше или равно, это было бы >= . => предназначено для определения ассоциаций в ассоциативном массиве.

3. это для многомерного массива

Ответ №1:

Как упоминалось в комментариях, $_POST[‘времяпрепровождение’] представляет собой массив примерно такого вида:

 Array ( 
  [0] => beachwalks 
  [1] => gardeningArray
  ...
) 
  

Итак, с $pastime[$_POST["pastime"][$i]] вами получаем значение указанного индекса 0 или 1 и так далее .. используя [$i]

И => используется для определения пар ключ-значение в массиве. Итак, в вашем случае [beachwalks] это ключ, а [0] — значение

См. Документ для получения дополнительной информации о массивах

Комментарии:

1. Спасибо за вашу помощь. Однако это вызвало другой вопрос. Как он перебирает массив, используя $i — который является INT — в данном случае, когда это ассоциативный массив, а ключ на самом деле является строкой — например, beachwalks (который имеет значение 0)?

2.@Louiee это потому, что PHP по своей природе является свободно типизированным языком. PHP не требует явного определения типа в объявлении переменной. Таким образом, переменная, содержащая значение INT, может быть изменена на строковое или логическое значение. Например: — если у вас есть string 1 и INT 1 , и вы добавляете оба, то вы получите вывод как 2 . Подробнее об этом: строгое жонглирование типами против Свободные сравнения в PHP

Ответ №2:

[$i] является индексом массива. Форма, вероятно, имеет что-то вроде этого:

 What activities do you enjoy?<br>
<input type="checkbox" name="pastime[0]" value="beachwalks"> Beachwalks<br>
<input type="checkbox" name="pastime[1]" value="gardening"> Gardening<br>
<input type="checkbox" name="pastime[2]" value="playingsports"> Playing Sports<br>
<input type="checkbox" name="pastime[3]" value="other"> Other
  

Это создаст $_POST["pastime"] массив с элементами для всех выбранных флажков, а значением каждого элемента является атрибут value из HTML. Затем цикл устанавливает соответствующие элементы $pastime массива в 1 .

=> предназначено для назначения элементов ассоциативного массива. Вы должны быть в состоянии найти полное объяснение этого в разделе о массивах в руководстве по PHP.

Комментарии:

1. Спасибо за вашу помощь. Однако это вызвало другой вопрос. Как он перебирает массив, используя $i — который является INT — в данном случае, когда это ассоциативный массив, а ключ на самом деле является строкой — например, beachwalks (который имеет значение 0)?

2. В этой ситуации PHP автоматически преобразует целые числа в строки.

3. Попробуйте: $array = ["0" => "abc"]; echo $array[0];