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=array();
$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
$favoritepet=array("Mary"=>"Dog","John"=>"Snakes","Paul"=>"Centipede","Peter"=>"Cat");
var_dump($favoritepet);
$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;
}
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");
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
$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);
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" }
Источник: http://live-code.ru |