#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
и INT1
, и вы добавляете оба, то вы получите вывод как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];