Очень часто применяют циклы для вывода какой-нибудь информации. Я люблю использовать for вместо while. Циклы позволяют повторять определённое количество операторов. Всё что находится внутри скобок {...} называется телом цикла. Проход цикла называется итерацией. Итераций может быть много. Чаще всего циклы идеально подходят для вывода как одномерных, так и многомерных массивов PHP. Приведу вам список популярных циклов.
Пока существует условие цикл выполняется. Если условие равно FALSE, то цикл прекращает свою работу.
//while
$arr = array(1,2,3,4,5,6,7,8,9);
while($x < 10)
{
$x++;
echo $x;
}
//12345678910
Обратите внимание на увеличение счетчика $x++. Вы можете поставить увеличение значений переменной на одну единицу. Но вы должны поставить увеличение счетчика перед оператором echo. В противном случае, вы не выведите последний элемент.
Этот цикл срабатывает как минимум один раз. Относитесь внимательно к этому моменту. Цикл сработает даже если условие равно false. Проверка условия произойдет после работы блока кода внутри тела цикла. Этот цикл достаточно редко используется.
//do-while
$x = 1;
do
{
echo $x;
$x++;
} while ($x<=10);
Цикл for самый сложный по конструкции из циклов, но у него много возможностей. Например, можно вывести значение переменной по возрастанию и по убыванию. Можно вывести ассоциативный массив. Цикл for хорошо подходит для отображения многомерных ассоциативных массивов. Синтаксис цикла for: for(инициирующая команда; условие цикла; команды после итерации){тело цикла}. Команда выполняется один раз. Потом происходит проверка. Если команда соответствует условию, то она будет выполняться. Как только условие станет равным false, то команды перестанут выполняться.
//for
//индексированный массив
$arr = range(1,10);
for( $i = 0; $i < count($arr); $i++)
{
echo $arr[$i].", ";
}
//1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
$arr = array(array('site' => 'training-web.ru',
'author' => 'Egor',
'theme' => 'PHP'),
array('site' => 'egorch.ru',
'author' => 'Egor',
'theme' => 'CorelDraw'));
for( $i = 0; $i < count($arr); $i++)
{
$str .= $arr[$i]['site'].", ".$arr[$i]['author'].
", ".$arr[$i]['theme']." | ";
}
$str = rtrim($str, " | ");
echo $str;
//training-web.ru, Egor, PHP | egorch.ru, Egor, CorelDraw
Цикл foreach очень хорош для перебора ассоциативных массивов, где есть ключ значение. Если у вас несколько ключей в одном массиве, то используйте цикл for. Старайтесь не использовать цикл foreach внутри тела цикла foreach. Цикл в цикле - это двойная нагрузка на ваш сервер.
//foreach
//ассоциативный массив
$arr = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5,
'i' => 6, 'f' => 7, 'g' => 8, 'h' => 9);
foreach($arr as $key => $value)
{
echo $key."=>".$value.", ";
}
//a=>1, b=>2, c=>3, d=>4, e=>5, i=>6, f=>7, g=>8, h=>9,
//одномерный массив
$arr = array(1,2,3,4,5,6,7,8,9);
foreach($arr as $value)
{
echo $value.", ";
}
//1, 2, 3, 4, 5, 6, 7, 8, 9,
Конструкция break позволяет выйти из цикла. Вы должны использовать оператор if. Конструкция continue позволяет выборочно выполнить определённую итерацию цикла. Вы как бы перескакиваете с одной итерации на другую. Промежуточные итерации не выполняются.
//continue
$arr = range(1,100);
for( $i = 0; $i < count($arr); $i++)
{
if($i % 2 == 0) continue;
echo $arr[$i].", ";
}
/*2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30,
32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58,
60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80,
82, 84, 86, 88, 90, 92, 94, 96, 98, 100,*/
//break
$arr = range(1,100);
for( $i = 0; $i < count($arr); $i++)
{
echo $arr[$i].", ";
if($i == 10) break;
}
//1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,