Массивы в PHP
Введение
Массив — упорядоченный набор элементов, каждый из которых хранит одно значение, идентифицируемое с помощью одного или нескольких индексов.
В простейшем случае массив имеет постоянную длину и хранит единицы данных одного и того же типа, а в качестве индексов выступают целые числа.
Создать массив
Пример создания массива
<?php
$myArray = array(1,2,3,4)
Обратиться к элементу массива можно следующим образом
echo $myArray[0];
1
Пройтись по всему массиву
Чтобы вывести на экран все элементы массива можно написать функцию show_array()
<?php
$arr = array(1, 2, 3, 4);
function show_array($arr) {
foreach ($arr as &$value) {
echo $value;
echo '<br>';
unset($value);
}
}
show_array($arr);
1
2
3
4
Эта функция работает только с простыми массивами у которых нет вложенных массивов.
Получить длину массива
<?php
$my_array = array("one", "two", "three");
array_length = count($my_array);
echo($array_length);
3
Обратиться к элементу по его индексу
<?php
$my_array = array("one", "two", "three");
$indexed_array = array_values($my_array);
echo$indexed_array[1];
two
Словари
С помощью array() можно создавать словари
<?php
$myArray = array(
0 => 'Big',
1 => 'Small',
2 => 'Up',
3 => 'Down'
);
Обратиться к элементу массива можно следующим образом
echo $myArray[0];
Big
<?php
$myArray = array(
'a' => 'Big',
'b' => 'Small',
'c' => 'Up',
'd' => 'Down'
);
Обратиться к элементу массива можно следующим образом
echo $myArray['b'];
Small
Добавить элемент к массиву PHP
Допустим у нас есть массив из двух чисел, который можно посмотреть функцией show_array()
<?php
$a = array(1, 2);
show_array($a);
1
2
Добавить к нему ещё один элемент можно с помощью array_push()
array_push($a, 3)
show_array($a);
1
2
3
Найти индекс элемента по значению
Если известно значение array_search() найдёт индекс первого элемента массива с таким значением
<?php
$a = array("a", "b", "c");
echo(array_search("c", $a));
2
Удалить элемент из массива
Функция unset() удаляет из массива элемент по его индексу
<?php
$a = array("a", "b", "c");
show_array($a);
unset($a[1]);
show_array($a);
a
b
c
a
c
Функцию show_array() мы написали заранее
Вывести содержимое массива
Если попытаться "распечатать" массив с помощью echo появится PHP Warning а вместо содержимого будет выведена строка "Array"
PHP Warning: Array to string conversion in
Пример
<?php
$b = array("a", "b", "c");
echo $b;
Array
[03-Dec-2024 07:31:21 Europe/Moscow] PHP Warning: Array to string conversion in array.php on line 4
Для такого простого массива эта проблема решается с помощью implode()
<?php
$b = array("a", "b", "c");
$arraydata = implode(',' , $b);
echo $arraydata;
a,b,c
Минус в том, что implode() разбирает только первый уровень вложенности
Если массив содержит вложенный массив
$с = array("a", "b", array("c", "d", "e"));
$arraydata = implode(',' , $с);
echo $arraydata;
то массив ["c", "d", "e"] будет обработан с тем же предупреждением.
a,b,Array
Вывести содержимое вложенного массива
Альтернативные способ вывода содержимого массива - использование print и json_encode()
Этот вариант работает не только с простыми, но и с вложенными массивами.
<?php
$simple_array = array("a", "b", "c");
$nested_array = array("a", "b", array("c", "d", array("e", "f", "g")));
print json_encode($simple_array);
print json_encode($nested_array);
["a","b","c"]["a","b",["c","d",["e","f","g"]]]
С помощью print_r() можно вывести содержимое вложенного массива, правда формат вывода достаточно специфический
print_r($nested_array);
Array ( [0] => a [1] => b [2] => Array ( [0] => c [1] => d [2] => Array ( [0] => e [1] => f [2] => g ) ) )