Перебор массива в 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. В результате мы рекомендуем удалять её посредством функции
<?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 нет. Если же вы хотите получить продвинутые навыки в освоении этого языка, ждём вас на наших курсах!