А это клавиатура, с помощью которой я творю...
http://kurepin.ru/php/array2/
Rambler's Top100
Пишем на PHP: Работа с массивами (продолжение)

Продолжаем заниматься массивами в режиме вопрос-ответ.

Как выстроить ячейки массива в обратном порядке (обернуть масссив)?

Если массив не очень большой, логично воспользоваться функцией array_reverse.

$arr=array_reverse($arr);

Но эта функция не слишком быстра на больших массивах. Для сортировки большого массива больше подходит вариант с циклом for:

for($i=count($arr)-1; $i>=0; $i—)
{
$arr2[$j++]=$arr[$i];
}
$arr=$arr2; unset($arr2);

т.е. обходим массив $arr от конца к началу и записываем данные в новый массив, начиная с нулевой ячейки.

Этот вариант работает быстрее, но кушает память во время выполнения, об этом тоже не стоит забывать.


Как получить сразу несколько элементов массива?

Предположим, что вам надо получить три элемента массива в разные переменные. Можно воспользоваться традиционным присваиванием:
$first_name=$person[1];
$last_name=$person[2];
$fax=$person[14];

а можно воспользоваться функцией array_slice совместно с хорошо известной нам функцией list.

list($first_name,$last_name,$fax)=array_slice($person,1,2,14);

Может быть вам покажется, что функция array_slice и не самая полезная, но, поверьте, бывают случаи, когда она очень удобна. Например, когда надо из большого массива выделить выборочные данные в маленький массив.

$basket=array_slice($shop,4,6,12,18,22);


Как найти элементы, удовлетворяющие определенному условию?

Тут, друзья мои, лучше всего подходят традиционные методы работы с массивами — циклы.

Для обхода массива по ячейкам можно использовать любые циклы, но традиционно, используется цикл for для обыкновенных массивов и foreach для ассоциативных.

С первым циклом вы уже знакомы, а циклом foreach можно воспользоваться, например, так:

foreach($arr as $k => $v)
{
echo "arr['$k']=$v
\n";
}

Этот цикл нарисует вам все содержимое ассоциативного массива в столбик. Кстати, этот метод вполне приемлем и для числовой индексации массивов, но он работает медленнее, чем цикл for, поэтому, использовать его следует по прямому назначению.


Как отсортировать массив?

Для сортировки массива в PHP существуют различные функции.

sort() — сортирует массив самым, что ни на есть, традиционным способом. В качестве дополнительного параметра сортировки можно указать: сортировку обыкновенную, сортировку числовую и сортировку строковую.

asort() — используется для сортировки ассоциативных массивов.

arsort() и rsort() — сортируют массив в обратно порядке, с той лишь разницей, что arsort сортирует массивы ассоциативные, а asort сортирует массивы с числовой индексацией.


ksort() и krsort() — сортируют ассоциативные массивы по ключам, что бывает очень важно. Первая функция сортирует в прямом, а вторая — в обратном порядке.

natsort() — не менее полезная сортировка, осуществляющая упорядочивание элементов массива в "натуральном", жизненно-очевидном порядке. Покажу на примере из учебника PHP — сразу станет все понятно:

Standard sorting
Array
(
[0] => img1.png
[1] => img10.png
[2] => img12.png
[3] => img2.png
)

Natural order sorting
Array
(
[3] => img1.png
[2] => img2.png
[1] => img10.png
[0] => img12.png
)


natcasesort() — делает то же самое, но не обращая внимания на регистр букв.

usort() и uksort() — функции сортировки по правилам, определяемым пользователем. Я не буду подробно останавливаться на этом виде сортировки. Так как используют ее крайне редко. Если доведется, посмотрим эту функцию на "живом" примере.

Осталось затронуть некоторые особенности работы с ассоциативными массивами, но это уже не сегодня.

Данный выпуск был подготовлен при подглядывании в книгу Хьюгса Стерлинга "PHP 4.0. Руководство разработчика".

До завтра!

[шаг назад] [печатать] [в начало сайта]



copyright ©2000-2017 Ruslan Kurepin