PHP-4 Эффективная работа


If
While
Do..while
For
Foreach
Break
Continue
Switch
Альтернативный синтаксис представления управляющих структур
Declare
Require
Include
Require_once()
lnclude_once()

6.5. Foreach

Начиная с версии РНР 4 в состав языка включена долгожданная для всех программистов конструкция foreach, которая представляет собой механизм, предназначенный для итерационного просмотра содержимого массивов. Для работы с оператором foreach предусмотрено два синтаксиса:
foreach(array_expression as $value) statement

foreach(array_expression as $key => $value) statement

Первый вариант обеспечивает последовательный проход массива, заданного выражением array_ехрrеssiоn. При каждой итерации значение очередного элемента массива присваивается переменной $value, а внутренний указатель массива инкрементируется, в результате чего на следующей итерации вы получите доступ к следующему элементу массива.

Второй вариант работает точно таким же образом, но вы дополнительно получаете доступ к очередному ключу (индексу) массива, который помещается в переменную $kеу.

совет
       При начале выполнения оператора foreach внутренний указатель массива автоматически устанавливается на первый элемент массива. Это означает, что вам не нужно вызывать функцию reset() (см. раздел 8.3.15) перед началом цикла.

Использование цикла foreach в ряде случаев позволяет заметно упростить программу. Как вы можете убедиться, два приведенных ниже фрагмента полностью эквивалентны:

reset ($arr);
while (list(, $value) = each ($arr)) {
       echo "Значение: $value <br>\n" ;
}
foreach ($arr as $value) {
       echo "Значение: $value
\n" ;
}
А вот еще два полностью эквивалентных примера:
reset ($arr) ;
while (list($key, $value) = each ($arr)) {
       echo "Ключ: $key; Значение: $value<br>\n" ;
}
foreach ($arr as $key => $value) {
       echo "Ключ: $key; Значение: $value<br>\n" ;
}
И наконец, чтобы предоставить в ваше распоряжение достаточно примеров для использования цикла foreach в своих программах:
<?
       echo "<h3>Пример 1: Нас интересуют только значения</hЗ>"
; $а = array (1, 2, 3, 17) ;
foreach ($a as $v) {
       print "Текущее значение \$а: $v.<br>";
}
       echo "<h3>Пример 2: значение выводится с ключом</h3>" ;
$1 = 0; /* только для демонстрации... */
foreach($a as $v) {
       print "\$a[$i++] => $v.<br>";
}
       echo "<h3>Примep 3: Ключ и значениe</h3>" ;
$a = array (
       "раз" => 1,
       "два" => 2,
       "три" => 3,
       "сто" => 100
);
foreach($a as $k => $v) {
       print "\$a[$k] => $v.<br>";

echo "<р3>Пример 4: многомерный массив </h4>
$b[0] [0] = "a"
$b[0] [l] = "b"
$b[l] [0] = "y"
$b[l] [l] = "z"

foreach($b as $vl) {
       foreach ($vl as $v2) {
               print "$v2\n";
       }
)
     echo "<hЗ>Пример 5: динамические массивы</hЗ>";

foreach(array(1, 2, 3, 4, 5) as $v) {
       print "$v\n";
}
?>

Результаты выполнения последних пяти примеров представлены на рис. 6.1.

Рис. 6.1. Результаты выполнения циклов foreach

6.6. Break

Оператор break прекращает выполнение текущей конструкции for, while, foreach или switch. При использовании break вы можете передать ему дополнительный числовой аргумент, который указывает, сколько вложенных управляющих структур этот оператор должен «пронзить», прежде чем успокоиться. Вот несколько примеров его использования:

<?

       echo "<hЗ>Стандартное использование break</h3>";

$аrr = array ('раз', 'два', 'три', 'четыре', 'стоп!', 'пять');
while (list (, $val) = each ($arr)) {
          if ($val == 'стоп!') {
               break; /* Можно использовать здесь break 1 */
          }
          echo "$val<br>";
}
       echo "<hЗ>Использование дополнительного аргумента break.</h3>";

$i =0;
while (++$i) {
          switch ($i) {
          case 5:
               echo "Индекс равен 5<br>\n";
               break 1; /* Выход только из оператора switch. */
          case 10:
               echo "Индекс равен 10; конец работы<br>\n";
               break 2; /* Выходим из switch и из while. */
          default:
               break;
          }
}
?>

Результат работы этой программы представлен на рис. 6.2.

Рис. 6.2. Практическое применение break

6.7. Continue

Оператор continue используется внутри циклов для пропуска оставшегося после этого оператора тела цикла и перехода к проверке условия выполнения очередной итерации. И логикой применения, и своим названием этот оператор обязан старому доброму Фортрану.

Оператор continue, так же как и break, может принимать дополнительный аргумент, указывающий на то, сколько уровней вложенных управляющих структур должно быть завершено.

Вот примеры использования оператора continue, результаты работы которых приведены на рис. 6.3.

Рис. 6.З. Результаты применения оператора continue
<?
echo "<hЗ>Выводим четные <i>элементы</i> массива</hЗ>";
$arr = array (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13);
while (list ($key, $value) = each ($arr)) {
       if (!($key % 2)) { // игнорируем нечетные числа
          continue;
        }
       print "$value";
}
echo "<hЗ>Демонстрация выхода из вложенных структур</hЗ";
$i = 0;
while ($i++ < 5) {
       echo "Внешний цикл <br>\n";
       while (1) {
          echo "   <i >Промежуточный</i ><br>\n" ;
          while (1) {
               echo      " ;
               echo "<b>Внутренний</b><br>\n" ;
               continue 3;
          }
          echo "Сюда вам не попасть ! <br>\n" ;
}
echo "И сюда тоже... <br>\n" ;
назад
далее

Сайт управляется системой uCoz