PHP функции для работы с массивами
Просмотров: 1406.
Подписаться на комментарии по RSS.
PHP массивы являются простым способом хранения множества битов информации (например, строк) в простой переменной PHP, известный как "переменная-массив". Доступ к каждой отдельной части информацию можно получить с помощью ключа или индекса.
С другой стороны, "строки" являются конечным набором символов алфавита. В PHP можно указать строку с одинарных или двойных кавычках:
<?php $string1= 'This is a string created by single quote'; $string2= "This is a string created by double quotes"; ?>
Большая часть информации, которую вы собираете из веб форм, имеет строковый тип данных. Хранение строк в массиве позволяет использовать в коде только одну PHP переменную для хранения большого количества информации. Предположим, вы хотите определить переменную массива, который состоит из планет Солнечной системы, вы могли бы сделать это следующим образом:
<?php
//создать переменную-массив $planets
$planets=array();
//сохранить строки, которые являются названиями планет, в переменной-массиве $planets
$planets=array("Mercury","Venus","Earth","Mars","Jupiter","Saturn","Uranus","Neptune");
//вывести в броузер содержимое переменной-массива
var_dump($planets);
?>
Вывод будет таким:
array(8) {
[0]=>string(7) "Mercury"
[1]=>string(5) "Venus"
[2]=>string(5) "Earth"
[3]=>string(4) "Mars"
[4]=>string(7) "Jupiter"
[5]=>string(6) "Saturn"
[6]=>string(6) "Uranus"
[7]=>string(7) "Neptune"
}
Числа от [0] до [7] являются значениями индекса (ключа), которые соответствуют каждой строке, хранящейся в массиве. Строку можно получить при помощи ключа. Предположим, вам необходимо получить планету "Jupiter", ключом будет 4:
<?php var_dump($planets[4]); ?>
Существуют также и "ассоциативные массивы", которые являются полезными, если не используется последовательный числовой индекс (ключ) для элементов строки. Например:
<?php
//Пример1. Ассоциативный массив людей и их животных
$favoritepet=array("Mary"=>"Dog","John"=>"Snakes","Paul"=>"Centipede","Peter"=>"Cat");
var_dump($favoritepet);
//Пример2. Ассоциативный массив людей и их вес в килограммах
$weight=array("Mary"=>50,"John"=>60,"Paul"=>80,"Peter"=>71);
var_dump($weight);
?>
Далее приведен вывод вышеуказанных массивов
Пример1:
array(4) {
["Mary"]=>string(3) "Dog"
["John"]=>string(6) "Snakes"
["Paul"]=>string(9) "Centipede"
["Peter"]=>string(3) "Cat"
}
Пример2:
array(4) {
["Mary"]=>int(50)
["John"]=>int(60)
["Paul"]=>int(80)
["Peter"]=>int(71)
}
<b>Функции для работы с массивами строк</b>
1. count() это функция, которую можно использовать для подсчета всех элементов, которые присутствуют в массиве. Например:
<?php
$nameofgirl= array("Amanda","Jenna","Elizabeth");
echo "The number of girl names in the array is ".count($nameofgirl);
?>
Результатом будет 3. Существует функция аналогичная count(), известная как SizeOf(), которая дает тот же результат.
2. Функция array_push() используется при вставке/добавлении новых элементов в существующий массив. Предположим, вы добавите следующие имена Linda,Jenny и Anna в созданную ранее переменную-массив $nameofgirl:
<?php
$nameofgirl=array();
$nameofgirl= array("Amanda","Jenna","Elizabeth");
//добавить новые имена в существующий массив
array_push($nameofgirl, "Linda", "Jenny","Anna");
var_dump($nameofgirl);
?>
А вот вывод (обратите внимание, что новые элементы добавляются в конец массива)
array(6) {
[0]=> string(6) "Amanda"
[1]=> string(5) "Jenna"
[2]=> string(9) "Elizabeth"
[3]=> string(5) "Linda"
[4]=> string(5) "Jenny"
[5]=> string(4) "Anna"
}
Ещё один способ добавить элементы в массив, это приравнять добавляемую строку переменной-массиву:
$arrayvariable[]="String to be inserted to the array"
Добавим пять букв в созданный массив букв алфавита:
<?php
$fiveletters=array("d","e","f","e","f");
$existingarray=array("a","b","c");
//Считываем массив из пяти букв с помощью цикла и добавляем в существующий массив
foreach ($fiveletters as $value) {
$existingarray[]=$value;
}
//выводим обновленные элементы в массиве $existingarray
var_dump($existingarray);
?>
Вот результат:
array(8) {
[0]=>string(1) "a"
[1]=>string(1) "b"
[2]=>string(1) "c"
[3]=>string(1) "d"
[4]=>string(1) "e"
[5]=>string(1) "f"
[6]=>string(1) "e"
[7]=>string(1) "f"
}
3. Функция in_array() проверяет, присутствует ли определенная строка в массиве.
Предположим, необходимо проверить присутствует ли имя "Linda" в массиве $nameofgirl:
<?php
$nameofgirl=array();
$nameofgirl= array("Amanda","Jenna","Elizabeth");
array_push($nameofgirl, "Linda", "Jenny","Anna");
//проверяем присутствует ли имя "Linda" в массиве
if (in_array("Linda",$nameofgirl)) {
echo "Yes the name Linda is found on the array";
} else {
echo "Sorry but the name Linda is not on the array";
}
?>
Приведенный выше код выводит "Yes the name Linda is found in the array".
4. Функция array_unique() удаляет из массива повторяющиеся значения.
Допустим, у нас есть массив цветов:
<?php
//Массив цветов, элемент "red" повторяется
$fivecolors=array("blue","red","yellow","red","magenta");
var_dump($fivecolors);
?>
Ниже приведен дамп этого массива (обратите внимание на значение индекса (ключа) каждого элемента строки):
array(5) {
[0]=>string(4) "blue"
[1]=>string(3) "red"
[2]=>string(6) "yellow"
[3]=>string(3) "red"
[4]=>string(7) "magenta"
}
Теперь удалим дубликаты с помощью функции array_unique:
<?php
$fivecolors=array("blue","red","yellow","red","magenta");
//удаляем повторяющиеся значения в массиве
$unique=array_unique($fivecolors);
//выводим в броузер
var_dump($unique);
?>
Далее приведен дамп результатов работы функции array_unique. Обратите внимание, что элемент с индексом 3 исчез, поскольку является дубликатом.
array(4) {
[0]=>string(4) "blue"
[1]=>string(3) "red"
[2]=>string(6) "yellow"
[4]=>string(7) "magenta"
}
5. Функция array_values() используется для устранения любых разрывов в индексах, вызванных выполнением array_unique. В предыдущем примере, вы можете заметить значения индексов 0,1,2 и 4 (3 удален, потому что является дубликатом). Порядок индексов можно восстановить в 0,1,2,3,4 с помощью функции array_values():
<?php
$fivecolors=array("blue","red","yellow","red","magenta");
$unique=array_unique($fivecolors);
//восстанавливает нумерацию индексов, удаляя разрывы в последовательности
$resettedindex= array_values($unique);
//вывод в браузер
var_dump($resettedindex);
?>
Будет выведено:
array(4) {
[0]=> string(4) "blue"
[1]=> string(3) "red"
[2]=> string(6) "yellow"
[3]=> string(7) "magenta"
}
Теперь индексы имеют правильную последовательность (0,1,2,3)
6. Функция array_change_key_case() может быть использована для приведения всех элементов в массиве к единому регистру. Иногда вы будете обрабатывать в массиве строковые элементы, которые не имеют единого регистра (например, строки с верхнем и нижнем регистре). Если вам нужно сделать все строки "в верхнем регистре" или "в нижнем регистр", то можете использовать эту функцию.
<?php
$mixedcase=array("bLuE"=>1,"RED"=>2,"Yellow"=>3,"mAgENTA"=>4);
//Преобразовать все строки в массиве в верхний регистр
$uppercase= array_change_key_case($mixedcase, CASE_UPPER);
//вывести содержимое массива
var_dump($uppercase);
?>
Вывод:
array(4) {
["BLUE"]=>int(1)
["RED"]=>int(2)
["YELLOW"]=>int(3)
["MAGENTA"]=>int(4)
}
Примечание: Если не указать CASE_UPPER, то по умолчанию будет использоваться нижний регистр.
7. Функция array_count_values возвращает частоту появления элементов в массиве. Пример:
<?php
$fivecolors=array("blue","red","yellow","red","magenta");
//возвращает частоту появления элементов
$frequency=array_count_values($fivecolors);
var_dump($frequency);
?>
При этом будет выведен следующий результат:
array(4) {
["blue"]=>int(1)
["red"]=>int(2)
["yellow"]=>int(1)
["magenta"]=>int(1)
}
Вы уже заметили, что результатом функции var_dump является ассоциативный массив. Можно получить частоту появления красного цвета следующим образом:
<?php
$fivecolors=array("blue","red","yellow","red","magenta");
$frequency=array_count_values($fivecolors);
//возвращает частоту появления только красного цвета
echo $frequency["red"];
?>
8. Функция array_search будет искать данную строку в переменной-массиве и возвращать индекс, если он найден. Пример:
<?php
$fivecolors=array("blue","red","yellow","magenta");
//Ищет синий цвет и возвращает ключ
$key = array_search('blue', $fivecolors);
echo $key;
?>
Результатом будет 0, поскольку синий (blue) является первым элементом массива. Ещё пример:
<?php
$fivecolors=array("blue","red","yellow","magenta");
//Ищет белый цвет и возвращает ключ
$key = array_search('white', $fivecolors);
echo $key;
?>
Результатом будет False/Null или логический 0, потому что белый цвет не входит в массив. Имейте в виду, что 0 может быть результатом двух возможных сценариев: в первом случае цвет действительно существует в массиве, и находится в первом элементе. Во втором сценарий функция array_search не может найти строку в массиве и возвращает то, что может быть интерпретировано как 0/False или null.
Чтобы избежать подобных проблем, сперва потребуется проверить с помощью функции in_array(), что строка действительно существует в массиве.
<?php
$fivecolors=array("blue","red","yellow","red","magenta");
//Найти белый цвет и вернуть ключ
//Проверить, что белый цвет присутствует в массиве
if (in_array("white",$fivecolors)) {
//белый цвет есть в массиве, теперь получить ключ
$key = array_search('white', $fivecolors);
echo $key;
} else {
//белого цвета нет в массиве
echo "The key does not exist for this color";
}
?>
9. Функция asort сортирует строковые элементы переменной- массива в алфавитном порядке и поддерживает соответствующий индекс.
<?php
$favoritebands=array("Mary"=>"Nirvana","John" =>"Metallica","Paul"=>"Beatles","Peter"=>"Who","Alice"=>"Greenday","Chris"=>"Black Sabbath");
foreach ($favoritebands as $key => $val) {
echo "$key = $val<br />";
}
?>
Результат (без сортировки)
Mary = Nirvana
John = Metallica
Paul = Beatles
Peter = Who
Alice = Greenday
Chris = Black Sabbath
Сортировка элементов массива по именам групп:
<?php
$favoritebands=array("Mary"=>"Nirvana","John" =>"Metallica","Paul"=>"Beatles","Peter"=>"Who","Alice"=>"Greenday","Chris"=>"Black Sabbath");
//сортирует строковые элементы и поддерживает ассоциацию с индексом
asort($favoritebands);
foreach ($favoritebands as $key => $val) {
echo "$key = $val<br />";
}
?>
Теперь отсортированный результат:
Paul = Beatles
Chris = Black Sabbath
Alice = Greenday
John = Metallica
Mary = Nirvana
Peter = Who
10. array_merge объединяет элементы двух и более массивов
<?php
$fivecolors=array("blue","red","yellow","magenta");
$threecolors=array("white","black","green");
//Объединить два массива
$eightcolors=array_merge($fivecolors,$threecolors);
var_dump($eightcolors);
?>
Результат:
array(7) {
[0]=>string(4) "blue"
[1]=>string(3) "red"
[2]=>string(6) "yellow"
[3]=>string(7) "magenta"
[4]=>string(5) "white"
[5]=>string(5) "black"
[6]=>string(5) "green"
}
11. Функция array_pop извлекает последний элемент из массива. Это полезно, когда необходимо удалить последний элемент из массива:
<?php
$animals=array("bear","lion","cheetah","tiger","wolf");
//удаляем последний элемент
$pop_out = array_pop($animals);
//показать удаленный элемент
var_dump($pop_out);
//вывести обновленный массив animals
var_dump($animals);
?>
Вывод для последнего удаленного элемента:
string(4) "wolf"
Вывод обновленного массива animals (элемента wolf нет, он был удален из массива)
array(4) {
[0]=>string(4) "bear"
[1]=>string(4) "lion"
[2]=>string(7) "cheetah"
[3]=>string(5) "tiger"
}
Последние комментарии
Финансовый стриптиз за март 2012
Многоязычный сайт на PHP