Перебор массива в PHP | OTUS

Перебор массива в PHP

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

Для последовательного перебора всех элементов массива в PHP существует цикл foreach. Он подходит для работы и с массивами, и с объектами. При этом следует учесть, что применение его с переменными прочих типов либо с переменными, которые неинициализированы, приведёт к появлению ошибки. Но давайте не будем забегать вперёд и рассмотрим всё по порядку.

Итак, для цикла foreach существуют 2 два вида синтаксиса. Первый из них реализуется так:

    foreach($arrayas$value) {
  инструкции
}

В результате работы кода цикл станет перебирать нужный нам массив $array (вместо $array можно подставить название нашего массива). При этом на каждой итерации значение, которое имеет текущий элемент, будет присваиваться переменной $value (здесь также можете указать нужно вам имя переменной).

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

Рассмотрим работу оператора на примере перебора массива:

    <?php

  $my_arr= array(1, 2, 3, 4, 5);

  foreach($my_arras$value) {
    echo$value, " ";
  }

?>

У оператора foreach есть и другой вид синтаксиса, давайте на него посмотрим:

    foreach($arrayas$key=> $value) {
  инструкции
}

Что особенного в применении этой формы? Дело в том, что на каждой итерации происходит дополнительное присваивание значения текущего ключа переменной $key (вы можете указать иное имя переменной). Вот, как это работает:

    <?php

  $my_arr= array(1, 2, 3, 4, 5);

  foreach($my_arras$key=> $value) {
    echo"[$key] => ", $value, "<br>";
}

?>

Если хотите менять элементы вашего массива внутри цикла напрямую, надо применять ссылку. В таком случае значение присвоится по ссылке.

    <?php

  $my_arr= array(1, 2, 3);
  foreach($my_arras&$value) {
    $value*= 2;
    echo$value;
  }

  /* это необходимо, чтобы следующие записи в
  переменную $value не меняли последний элемент вашего массива */
  unset($value); // разорвать ссылку на последний элемент

?>

На что тут важно обратить внимание? Дело в том, что ссылка на последний элемент вашего массива остаётся даже после завершения работы оператором foreach. В результате мы рекомендуем удалять её посредством функции unset(), как это реализовано в вышеописанном примере. Теперь посмотрим, что произойдёт, если мы не будем применять unset():

    <?php

  $numbers= array(1,2,3,4,5);

  foreach($numbersas&$num) {
    echo$num, " ";
  }

  // Присвоим новое значение переменной $num
  $num= '100';
  echo'<br>';

  foreach($numbersas&$num) {
    echo$num, " ";
  }

?>

Также надо отметить очередной нюанс: ссылку можно применять только в том случае, когда перебираемый нами массив является переменной. К примеру, код ниже работать не будет:

    <?php

  foreach(array(1, 2, 3) as&$value) {
    $value*= 2;
  }

?>

В целом, как видите, ничего сложного в переборе массива на PHP нет. Если же вы хотите получить продвинутые навыки в освоении этого языка, ждём вас на наших курсах!

PHP_970x90-20219-10b307.jpg

Источник

Не пропустите новые полезные статьи!

Спасибо за подписку!

Мы отправили вам письмо для подтверждения вашего email.
С уважением, OTUS!

Автор
0 комментариев
Для комментирования необходимо авторизоваться
Популярное
Сегодня тут пусто