Перемещение по массиву
Довольно часто при программировании на PHP нам приходится перебирать все без исключения элементы некоторого массива. Если наш массив — список, то эта задача как мы уже знаем, не будет особенно обременительной. Это можно сделать с помощью обычных операторов цикла while, do-while, for
. Вместе стем в РНР имеется специальная очень удобная конструкция foreach
(для каждого), которая имеет две синтактические формы:
foreach (массив as $значение) {выражения};
foreach (массив as $индекс = >$значение) {выражения};
Здесь
$значение
— переменная, выбираемая по своему усмотрению, для представления значения текущего элемента массива;$индекс
— переменная для представления значения текущего индекса элемента массива;as
— в выражении указанном в круглых скобках является ключевым.
Конструкция foreach
последовательно перебирает все элементы указанного ей массива, присваивая их значения переменной $индекс
. Эти переменные доступны в коде, указанным в фигурных скобках. Код, работая с данными переменными, имеет дело с текущим на данной итерации элементом массива.
Пример.
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>Перемещение по массиву</title>
</head>
<body>
<?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>';
}
?>
</body>
</html>
$value
— возвращает значение элемента массива;
$key=key($Names)
— где, функция key()
возвращает ключ, который имеет текущий элемент (если он указывает на конец массива, возвращается пустая строка).
В окне веб-браузера это будет выглядеть ТАК.
Перебор элементов массива можно выполнить и с помощью специальных функций, которые реализуют перемещение указателя на текущий элементт массива:
current (массив)
— возвращает текущее значение элемента массива, не перемещая указатель;next (массив)
— перемещает указатель на следующий элемент массива;prev (массив)
— перемещает указатель на предыдущий элемент массива;end (массив)
— перемещает указатель на последний элемент массива;reset (массив)
—перемещает указатель на начальный элемент массива;
Если к массиву не применялась функция перемещения указателя, то считается, что он установлен на первый (начальный) элемент.
Пример.
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>Перемещение по массиву</title>
</head>
<body>
<?php
$Names=array("Фамилия"=>"Сидоров","Имя"=>"Дмитрий","Возраст"=>30);
$x=current($Names);
echo $x;
echo '<br>';
$x=next($Names);
echo $x;
echo '<br>';
$x=reset($Names);
echo $x;
?>
</body>
</html>
В окне веб-браузера это будет выглядеть ТАК.
Все перечисленные функции перемещения указателя возвращают значение элемента массива. Однако применение функций prev()
и next()
может вывести указатель за пределы массива, и тогда они вернут логическое значение false, а не значение элемента массива. Поэтому эти функции обычно используются совместно с проверкой выхода за границы массива.
Например.
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>Перемещение по массиву</title>
</head>
<body>
<?php
$Names=array("Фамилия"=>"Сидоров","Имя"=>"Дмитрий","Возраст"=>30);
$x=next($Names); //переход к следующему элементу массива
if($x===false){ //если выход за конец массива
echo "Выход за конец массива"; //вывод предупреждения
}
else{
echo $x; //вывод значения элемента массива
}
?>>
</body>
</html>
В окне веб-браузера это будет выглядеть ТАК.
Обратите внимание, что здесь и в других подобных случаях необходимо использовать оператор жесткого равенства = = =, поскольку элемент массива, возвращаемый функцией next()
, можетиметь значение null, "", 0, "0"
и false
, но это еще не повод остановить обработку. Оператор жесткого равенства учитывает типы сравнимых значений.
Запись значений элементов массива в переменные. Конструкция list
Чтобы значения элементов массива с числовыми индексами, начинающимися с 0, присваивать переменным из заданного списка, можно использовать следующую конструкцию:
list (список_ переменных) = массив;
При этом создаются переменные, указанные в списке через запятую, и им присваиваются элементы массива с числовыми индексами: первой переменной присваивается значение элемента с индексом 0, второй переменной — значение элемента с индексом 1 и т.д.
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>Конструкция list()</title>
</head>
<body>
<?php
$Names=array("Сидоров", "Дмитрий", 30);
list($x,$y)= $Names;
var_dump($x,$y); //выводит значения и типы переменных $x и $y
?>
</body>
</html>
В окне веб-браузера это будет выглядеть ТАК.
Конструкция list()
по своему синтаксису похожа на вызов функции, но отличается от него тем, что может быть записана слева от оператора присвоения. Однако выражению с вызовом настоящей функции нельзя присваивать никакое значение. Иначе говоря вызов функции можетвстречаться только справа от оператора присвоения.
В списке переменных можно использовать элементы массива.
list($b[0], $b[1], $b[2]) = $a;
В этом случае происходит копирование значений элементов массива $a
в элементы массива $b
. Данная операция осуществляется, начиная с крайнего правого элемента массива $a
, в результате чего порядок расположения элементов массива $b
будет противоположен порядку элементов в массиве $a
, хотя индексы элементов сохраняются.
Пример:
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>Конструкция list()</title>
</head>
<body>
<?php
$Names=array("Сидоров", "Дмитрий", 30);
list($b[0], $b[1], $b[2])= $Names;
var_dump($b); // структура массива [2]=> int(30) [1]=> string(7) "Дмитрий" [0]=> string(7) "Сидоров"
?>
</body>
</html>
В окне веб-браузера это будет выглядеть ТАК.
Строки PHP
Есть несколько функций, которые чрезвычайно часто используются при программировании сценариев. Среди них — функции для разбиения какой-либо строки на более мелкие части (например, эти части разделяются в строке каким-то специфическим символом типа |), и, наоборот, слияния нескольких небольших строк в одну большую, причем не впритык, а вставляя между ними разделитель.
Преобразование массива в текстовую строку
Чтобы значения элементов объединить в их строковом представлении в одну текстовую строку, можно использовать функцию
implode(разделитель, массив)
Параметр разделитель является строкой символов, которая вставляется между элементами массива при их объединении в текстовую строку. Если этот параметр не указан, то предполагается пустая строка " "
. Данная функция возвращает строку, полученную в результате преобразования.
Пример:
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>Преобразование массива в текстовую строку</title>
</head>
<body>
<?php
$Names=array("Сидоров", "Дмитрий", 30);
$str=implode($Names); //результат: СидоровДмитрий30
echo $str;
echo '<br>';
$str=implode("-", $Names); //результат: Сидоров-Дмитрий-30
echo $str;
?>
</body>
</html>
В окне веб-браузера это будет выглядеть ТАК.
Преобразование текстовой строки в массив
Для записи фрагментов текстовой строки элементы массива служит функция
exhlode(разделитель, строка [, количество])
Параметр разделитель является строкой символов, которая рассматривается как разделитель фрагментов строки. Необязательный параметр(о чем говорят квадратные скобки) количество указывает максимальное количество элементов в возвращаемом массиве(при этом последний элемент будет содержать весь остаток строки).
Если разделитель не содержится в строке, то функция возвращает массив, содержащий единственный элемент, значением которого исходная строка. Если разделитель является пустой строкой, то функция возвращает логическое значение false
.
Пример:
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>Преобразование текстовой строки в массив</title>
</head>
<body>
<?php
$str="Сидоров, Дмитрий, 30";
$Names=explode(" ",$str); /*структура массива: [0] => Сидоров, [1] => Дмитрий, [2] => 30*/
print_r($Names);
echo '<br>';
$Names=explode("Дмитрий", $str); /*структура массива: [0] => Сидоров, [1] => , 30 */
print_r($Names);
?>
</body>
</html>
В окне веб-браузера это будет выглядеть ТАК.
-
Другие операции над массивами
Здесь будут перечислены несколько полезных функций для работы с массивами.
array_unique(массив)
— возвращает массив, полученный из указанного в качестве параметра путем удаления из него повторяющихся элементов.-
Пример:
<?php
$mar=array("a","b","c","b",6, 6);
$x=array_unique($mar); /*структура массива: [0] => a [1] => b [2] => c [4] => 6*/
print_r($x);
?> array_sum(массив)
— возвращает сумму значений элементов массива, указанного в качестве параметра.-
Пример:
<?php
$mar=array(1, 2, 3, "4");
$x=array_sum($mar); //возвращает 10
print_r($x);
?> array_slice(массив, n1, n2)
— возвращает массив, являющейся частью исходного масива, указанного в качестве параметра. В результате массив попадетn2
элементов исходного массива, начиная с элемента, имеющего номерn1
.-
Пример:
<?php
$mar=array(1, 2, 3, 4, 5, 6);
$x=array_slice($mar, 2, 3); /*структура массива: [0] => 3 [1] => 4 [2] => 5 */
print_r($x);
echo "<br>";
$x=array_slice($mar, -2, 3); /*структура массива: [0] => 5 [1] => 6*/
print_r($x);
?> array_merge(массив1, массив2, . . . , массивN)
— возвращает массив, получающийся в результате объединения двух или более массивов, указанных в качестве параметров.-
Пример:
<?php
$a= array("a", "b", "c");
$b= array("a", "x", "y");
$x=array_merge($a,$b); /*cтруктура массива: [0] => a [1] => b [2] => c [3] => a [4] => x [5] => y */
print_r($x);
?> array_diff(массив1, массив2, . . . , массивN)
— возвращает массив, состоящий из элементов массива, указанного в качестве первого параметра, которых нет в остальных массивах.-
Пример:
<?php
$a= array("a", "b", "c");
$b= array("a", "x", "y");
$x=array_diff($a,$b); /*cтруктура массива: [1] => b [2] => c */
print_r($x);
?> array_flip(массив)
— возвращает массив, получающийся из указанного в качестве параметра путем перестановки местами индексов и значений.-
Пример:
<?php
$a= array("Сидоров", "Дмитрий", 30);
$x=array_flip($a); /*cтруктура массива: [Сидоров] => 0 [Дмитрий] => 1 [30] => 2 */
print_r($x);
echo "<br>";
$a=array("Фамилия"=>"Сидоров", "Имя" =>"Дмитрий", "Возраст"=> 30);
$x=array_flip($a); /*cтруктура массива: [Сидоров] => Фамилия [Дмитрий] => Имя [30] => Возраст */
print_r($x);
?> extract(массив)
— создает переменные из символьных индексов массива и присваивает им значения соответствующих элементов массива; возвращает количество созданных переменных.-
Пример:
<?php
$a=array("Фамилия"=>"Сидоров", "Имя" =>"Дмитрий", "Возраст"=> 30);
$x=extract($a);
echo "Cотрудник нашей компании $Фамилия $Имя. Ему $Возраст лет";
?> сompact(список_имен_переменных)
— возвращает массив, созданный из указанных переменных, действие этой функции противоположно действиюextrac()
.-
Пример:
<?php
$a="Сидоров";
$b="Дмитрий";
$c=30;
$x=compact("a", "b", "c"); /*структура массива: [a] => Сидоров [b] => Дмитрий [c] => 30 */
print_r($x);
?>
Комментарии(0)
Для добавления комментариев надо войти в систему и авторизоватьсяКомментирование статей доступно только для зарегистрированных пользователей:Зарегистрироваться