Урок 14. PHP — Цикл Foreach
Представьте, что у вас есть ассоциативный массив, который вы хотите перебрать. PHP предоставляет простой способ использовать каждый элемент массива по очереди с помощью Foreach конструкции.
На простом языке это будет звучать примерно так:
«Для каждого элемента в указанном массиве выполнить этот код.»
В то время как цикл While будет продолжаться, пока выполняется некоторое условие, цикл foreach будет продолжаться, пока не пройдет через каждый элемент массива.
PHP Foreach: Пример
У нас есть ассоциативный массив, в котором хранятся имена людей в нашей компании, а также их возраст. Мы хотим знать, сколько лет каждому сотруднику, поэтому мы используем цикл по каждому элементу, чтобы распечатать имя каждого и возраст.
$employeeAges; $employeeAges["Lisa"] = "28"; $employeeAges["Jack"] = "16"; $employeeAges["Ryan"] = "35"; $employeeAges["Rachel"] = "46"; $employeeAges["Grace"] = "34"; foreach( $employeeAges as $key => $value){ echo "Name: $key, Age: $value <br />"; }
Получаем результат:
Name: Lisa, Age: 28 Name: Jack, Age: 16 Name: Ryan, Age: 35 Name: Rachel, Age: 46 Name: Grace, Age: 34
Что же, результат хороший и понятный, а вот синтаксис конструкции foreach не очень легкий и понятный. Давайте разберемся в нем поподробнее.
For each синтаксис: $something as $key => $value
Все это безумие примерно переводится в: «Для каждого элемента ассоциативного массива $employeeAges я хочу обратиться к $key и значению в нем, то есть к $value.
Оператор «=>» представляет связь между ключом и значением. В нашем примере мы назвали их как ключ — $key и значение — $value. Тем не менее, было бы легче думать о них, как об имени и возрасте. Ниже в нашем примере мы так и сделаем, и обратите внимание, что результат будет тот же, потому что мы только изменили имена переменных, которые относятся к ключам и значениям.
$employeeAges; $employeeAges["Lisa"] = "28"; $employeeAges["Jack"] = "16"; $employeeAges["Ryan"] = "35"; $employeeAges["Rachel"] = "46"; $employeeAges["Grace"] = "34"; foreach( $employeeAges as $name => $age){ echo "Name: $name, Age: $age <br />"; }
Ну и результат, повторимся, тот же самый:
Name: Lisa, Age: 28 Name: Jack, Age: 16 Name: Ryan, Age: 35 Name: Rachel, Age: 46 Name: Grace, Age: 34
Вот и все, в принципе синтаксис не сложный, достаточно понять суть. Если будут вопросы — задавайте, отвечу, если смогу :)
← Цикл For | Содержание | Цикл Do While →
Комментарии:
Здесь все понятно описано. Только нужно уточнить:
foreach( $employeeAges as $name => $age)
после AS первая переменная всегда показывает имя массива, т. е то что в «[]» а то что после => покажет самое значене массину ну то что после = и в «» ?
Здраствуйте Darius!
Да вы все правильно поняли!
$employeeAges;
$employeeAges[«Lisa»]=22;
foreach ($employeeAges as $name=>$age)
То есть $employeeAges=$employeeAges,
[«Lisa»]=$name,
22=$age
Надеюсь вы все поняли?
Успехов!
Друзья, здесь все прекрасно расписано! Приведу пример, если у вас есть Массив а в нем милиард имен, то вы пользуетесь циклом foreach. Смотрим пример:
$milioni_milioni_zdes_valos;
$…Милионы переменных…;
foreach ($milioni_milioni_zdes_valos as $nomer_zadrota=>$zadrot) {
echo «Номер задрота=$nomer_zadrota, Имя задрота: $zadrot»
} И так цикл будет выполнятся и выводить номер и имя каждого перечисленого в массиве задрота! Не забудте написать в конце ехо, если не хотите чтобы ваши задроты писались без пробела и в одну строчку, или же укажите етот забыл как его, вобщем вот гарантированный пробел в любом случае!
спс понятно!
Почему когда я допускаю ошибку при написании пхп кода все исчезает со страницы и потом при исправлении и загрузке вновь в сеть появляется, но не сразу после загрузки, а через некоторое время?
Например этот пример с foreach у меня не отображается вообще.
Денис, вопрос с задержками к хостеру. А вообще лучше на локальной машине проверять все, тогда и задержек не будет.
Скажите, а зачем эта строка в начале? И без нее вроде работает
$employeeAges;
насколько Я понимаю существуют зарезервированные (предопределенные) переменные/константы. Где их можно просмотреть, что знать?
Подскажите, как сделать так, чтобы при входе с поддомена ссылки (ну например на \css\style.css) менялись.
Например:
если вход осуществлен на example.com, то ссылка на стайл будет \css\style.css
иначе же если вход осуществлен на blablabla.example.com, то ссылка на стайл будет \..\example.com\css\style.css? Заранее спасибо!
Спасибо) Вы хорошо объясняете)
Я в восторге от подачи материала)
А как на счёт endforeach, в каких случаях он используется? И почему в выше приведённых примерах его нет?