This article has been localized into Russian by the community.
Еще о массивах
В предыдущем параграфе мы обсудили, как создавать массивы и заполнять их ключами и значениями. В этом параграфе мы рассмотрим некоторые функции, которые облегчают работу с массивами.
Implode (сжать) и explode (разорвать)
Функции implode() и explode() - это две отличных строковых функции, связанных с массивами. Они позволяют создать массив из строки, и наоборот. Вот пример использования обеих функций:
<?php
$values = "Rabbit|Whale|Penguin|Bird";
$array = explode("|", $values);
print_r($array);
echo "<br /><br />";
$string = implode(" and ", $array);
echo $string;
?>
Сначала мы задаем строку с перечнем животных, которые разделены символом |. Затем мы используем функцию explode, чтобы разделить значения в строке в массив - каждый раз, когда в строке встречается символ |, в массиве появляется новое значение. Мы используем функцию print_r() для тестового вывода массива, чтобы проверить, что все работает. После этого, мы используем функцию implode(), чтобы соединить все элементы массива. Первый параметр " and " означает что при добавлении каждого элемента из массива в строку, между ними ставится " and ". Попробуйте запустить код, чтобы увидеть результат. Explode() и implode() могут сильно помочь в разных ситуациях.
Присутствует ли значение в массиве?
Вам довольно часто может потребоваться проверять, присутствует заданное значение в массиве, или нет. Рассмотрим следующий пример, где для такой проверки используется функция in_array():
<?php
$animals = array("Dog", "Tiger", "Snake", "Goat");
if(in_array("Snake", $animals))
echo "Snake is in the array!";
else
echo "No snake in the array!";
?>
Функция может принимать до трех параметров, последний из которых необязательный. Он определяет, должно ли быть сравнение строгим - если да, то должны совпадать и значение, и тип данных. По умолчанию данный параметр равен false. Эта функция проверяет значения (values). Если вы хотите проверить, присутствует ли в массиве заданный ключи, используйте array_key_exists().
Уникальные значения
Иногда вы будете получать массивы из внешних источников, таких как базы данных и файлы. Если возможны повторяющиеся значения, можно использовать функцию array_unique(), чтобы их убрать. Функция возвращает массив, в котором все значения уникальны. Попробуйте следующий пример:
<?php
$array = array("Dog", "Tiger", "Snake", "Dog");
echo "Animals in array:<br />";
foreach($array as $value)
echo $value . "<br />";
echo "<br />";
$array = array_unique($array);
echo "Animals in unique array:<br />";
foreach($array as $value)
echo $value . "<br />";
?>
Получение случайного элемента
Зачастую бывает нужно получить случайное значение из заданного набора вариантов. К примеру, у вас может быть одна функция со случайной цитатой. Простейший способ сделать это - собрать массив с цитатами, и затем каждый раз выбирать из него случайную. К счастью, в PHP сделать это это очень просто - через функцию array_rand(). Вот пример:
<?php
$animals = array("Dog", "Tiger", "Snake", "Goat");
$randomAnimal = $animals[array_rand($animals, 1)];
echo "Random animal: " . $randomAnimal;
?>
У array_rand() есть два варианта: если в качестве последнего параметра указать 1 (или ничего не указывать - это значение по умолчанию), будет возвращен ключ, по которому можно получить доступ к случайному элементу. Однако, вам может потребоваться более одного элемента. В этом случае, просто укажите, сколько значений вам нужно. В этом случае будет возвращен массив с заданным количеством случайных значений.
Сортировка массивов
Используйте функцию sort(), чтобы упорядочить значения массива, как в следующем примере:
<?php
$animals = array("Dog", "Tiger", "Snake", "Goat", "Rabbit", "Whale", "Bird");
echo "Unsorted animals: " . implode(", ", $animals);
echo "<br /><br />";
sort($animals);
echo "Sorted animals: " . implode(", ", $animals);
echo "<br /><br />";
$animals = array_reverse($animals);
echo "Sorted animals, descending order: " . implode(", ", $animals);
?>
Мы просто определяем массив с перемешанным списком животных. Затем выводим его трижды. В первый раз - в исходном порядке, затем отсортированным с помощью метода sort(), и наконец, после применения функции array_reverse(), которая просто разворачивает массив.