Операции над массивами PHP. Перемещение по массиву. Строки PHP

Перемещение по массиву

Довольно часто при программировании на PHP нам приходится перебирать все без исключения элементы некоторого массива. Если наш массив — список, то эта задача как мы уже знаем, не будет особенно обременительной. Это можно сделать с помощью обычных операторов цикла while, do-while, for. Вместе стем в РНР имеется специальная очень удобная конструкция foreach(для каждого), которая имеет две синтактические формы:

foreach (массив as $значение) {выражения};

foreach (массив as $индекс = >$значение) {выражения};

Здесь

Конструкция foreach последовательно перебирает все элементы указанного ей массива, присваивая их значения переменной $индекс. Эти переменные доступны в коде, указанным в фигурных скобках. Код, работая с данными переменными, имеет дело с текущим на данной итерации элементом массива.

Пример.

<?php
$Names=array("Фамилия"=>"Сидоров","Имя"=>"Дмитрий","Возраст"=>30);
foreach($Names as $value){
echo $value.'<br>';
}
echo '<br>';
$key=key($Names);
foreach($Names as $key=>$value){
echo "$key-$value".'<br>';
}
?>

$value — возвращает значение элемента массива;

$key=key($Names) — где, функция key() возвращает ключ, который имеет текущий элемент (если он указывает на конец массива, возвращается пустая строка).

В окне веб-браузера это будет выглядеть ТАК.

Перебор элементов массива можно выполнить и с помощью специальных функций, которые реализуют перемещение указателя на текущий элементт массива:

Если к массиву не применялась функция перемещения указателя, то считается, что он установлен на первый (начальный) элемент.

Пример.

<?php
$Names=array("Фамилия"=>"Сидоров","Имя"=>"Дмитрий","Возраст"=>30);
$x=current($Names); //результат Сидоров
echo $x;
echo '<br>';
$x=next($Names); //результат Дмитрий
echo $x;
echo '<br>';
$x=reset($Names); //результат Сидоров
echo $x;
?>

В окне веб-браузера это будет выглядеть ТАК.

Все перечисленные функции перемещения указателя возвращают значение элемента массива. Однако применение функций prev() и next() может вывести указатель за пределы массива, и тогда они вернут логическое значение false, а не значение элемента массива. Поэтому эти функции обычно используются совместно с проверкой выхода за границы массива.

Например.

<?php
$Names=array("Фамилия"=>"Сидоров","Имя"=>"Дмитрий","Возраст"=>30);
$x=next($Names);
//переход к следующему элементу массива
if($x===false){ //если выход за конец массива
echo "Выход за конец массива"; //вывод предупреждения
}
else{
echo $x; //вывод значения элемента массива
}
?>

В окне веб-браузера это будет выглядеть ТАК.

Обратите внимание, что здесь и в других подобных случаях необходимо использовать оператор жесткого равенства = = =, поскольку элемент массива, возвращаемый функцией next(), можетиметь значение null, "", 0, "0" и false, но это еще не повод остановить обработку. Оператор жесткого равенства учитывает типы сравнимых значений.

Запись значений элементов массива в переменные.
Конструкция list

Чтобы значения элементов массива с числовыми индексами, начинающимися с 0, присваивать переменным из заданного списка, можно использовать следующую конструкцию:

list (список_ переменных) = массив;

При этом создаются переменные, указанные в списке через запятую, и им присваиваются элементы массива с числовыми индексами: первой переменной присваивается значение элемента с индексом 0, второй переменной — значение элемента с индексом 1 и т.д.

Пример:

<?php
$Names=array("Сидоров", "Дмитрий", 30);
list($x,$y)= $Names;
var_dump($x,$y);
//выводит значения и типы переменных $x и $y
?>

В окне веб-браузера это будет выглядеть ТАК.

Конструкция list() по своему синтаксису похожа на вызов функции, но отличается от него тем, что может быть записана слева от оператора присвоения. Однако выражению с вызовом настоящей функции нельзя присваивать никакое значение. Иначе говоря вызов функции можетвстречаться только справа от оператора присвоения.

В списке переменных можно использовать элементы массива.

list($b[0], $b[1], $b[2]) = $a;

В этом случае происходит копирование значений элементов массива $a в элементы массива $b. Данная операция осуществляется, начиная с крайнего правого элемента массива $a, в результате чего порядок расположения элементов массива $b будет противоположен порядку элементов в массиве $a, хотя индексы элементов сохраняются.

Пример:

<?php
$Names=array("Сидоров", "Дмитрий", 30);
list($b[0], $b[1], $b[2])= $Names;
var_dump($b);
/* структура массива [2]=> int(30) [1]=> string(7) "Дмитрий" [0]=> string(7) "Сидоров" */
?>

В окне веб-браузера это будет выглядеть ТАК.

Строки PHP

Есть несколько функций, которые чрезвычайно часто используются при программировании сценариев. Среди них — функции для разбиения какой-либо строки на более мелкие части (например, эти части разделяются в строке каким-то специфическим символом типа |), и, наоборот, слияния нескольких небольших строк в одну большую, причем не впритык, а вставляя между ними разделитель.

Преобразование массива в текстовую строку

Чтобы значения элементов объединить в их строковом представлении в одну текстовую строку, можно использовать функцию

implode(разделитель, массив)

Параметр разделитель является строкой символов, которая вставляется между элементами массива при их объединении в текстовую строку. Если этот параметр не указан, то предполагается пустая строка " ". Данная функция возвращает строку, полученную в результате преобразования.

Пример:

<?php
$Names=array("Сидоров", "Дмитрий", 30);
$str=implode($Names); //результат: СидоровДмитрий30
echo $str;
echo '<br>';
$str=implode("-", $Names); //результат: Сидоров-Дмитрий-30
echo $str;
?>

В окне веб-браузера это будет выглядеть ТАК.

Преобразование текстовой строки в массив

Для записи фрагментов текстовой строки элементы массива служит функция

exhlode(разделитель, строка [, количество])

Параметр разделитель является строкой символов, которая рассматривается как разделитель фрагментов строки. Необязательный параметр(о чем говорят квадратные скобки) количество указывает максимальное количество элементов в возвращаемом массиве(при этом последний элемент будет содержать весь остаток строки).

Если разделитель не содержится в строке, то функция возвращает массив, содержащий единственный элемент, значением которого исходная строка. Если разделитель является пустой строкой, то функция возвращает логическое значение false.

Пример:

<?php
$str="Сидоров, Дмитрий, 30";
$Names=explode(" ",$str); /*структура массива: [0] => Сидоров, [1] => Дмитрий, [2] => 30*/
print_r($Names);
echo '<br>';
$Names=explode("Дмитрий", $str); /*структура массива: [0] => Сидоров, [1] => , 30 */
print_r($Names);
?>

В окне веб-браузера это будет выглядеть ТАК.

Другие операции над массивами

Здесь будут перечислены несколько полезных функций для работы с массивами.




  • Другие |
назадвверхвперед
Rambler's Top100