A PHP Error was encountered

Severity: 8192

Message: mysql_escape_string(): This function is deprecated; use mysql_real_escape_string() instead.

Filename: mysql/mysql_driver.php

Line Number: 303

PHP функции для работы с массивами

PHP функции для работы с массивами

Автор: Mowshon.
Опубликовано 23 июля 2011
в рубрике PHP, Примеры

Просмотров: 10210.
Подписаться на комментарии по 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"

}

Оставьте комментарий!

Гость
Комментатор / хотите им стать

Чтобы стать комментатором введите email и пароль. Напишите комментарий. В дальшейшем ваша связка email-пароль, позволит вам комментировать и редактировать свои данные. Не забудьте про активацию (инструкция придет на ящик, указанный при регистрации).

grin LOL cheese smile wink smirk rolleyes confused surprised big surprise tongue laugh tongue rolleye tongue wink raspberry blank stare long face ohh grrr gulp oh oh downer red face sick shut eye hmmm mad angry zipper kiss shock cool smile cool smirk cool grin cool hmm cool mad cool cheese vampire snake excaim question

(обязательно)