Справочник по PHP - [10]

Шрифт
Интервал

>}

>// Пусть $Files содержит массив с ключами - именами файлов

>// в текущем каталоге. Отсортируем его.

>uksort($Files,"FCmp"); //передаем функцию сортировки "по ссылке"


2 пример использования функции uksort():

>

>function cmp($a, $b)

>{

> if ($a == $b) {

> return 0;

> }

> return ($a > $b) ? -1 : 1;

>}


>$a = array(4 => "four", 3 => "three", 20 => "twenty", 10 => "ten");


>uksort($a, "cmp");


>while (list($key, $value) = each($a)) {

> echo "$key: $valuen";

>}

?>

Этот пример выведет:

20: twenty10: ten4: four3: three

Функция поддерживается PHP 3 =3.0.4, PHP 4, PHP 5


usort


Пользоваетльская сортировка значений массива.

Синтаксис:

bool usort(array arr, callback cmp_function)

Функция usort() сортирует массив arr без сохраненя индексных ассоциаций, используя для сравнения значений пользовательскую функцию, указанную в аргументе cmp_function. В эту функцию передаются два сравниваемых индекса элементов, а она должна вернуть положительное или отрицательное число или 0.

Эта функция как бы является "гибридом" функций uasort() и sort(). От sort() она отличается тем, что критерий сравнения обеспечивается пользовательской функцией. А от uasort() - тем, что она не сохраняет связей между ключами и значениями, а потому пригодна разве что для сортировки списков.

Пример использования функции usort():

>

>function cmp($a, $b)

>{

> if ($a == $b) {

> return 0;

> }

> return ($a < $b) ? -1 : 1;

>}


>$a = array(3, 2, 5, 6, 1);


>usort($a, "cmp");


>while (list($key, $value) = each($a)) {

> echo "$key: $valuen";

>}

?>

Пример одномерного массива:

>function cmp($a, $b) {

> if($a==$b) return 0;

> return ($a > $b) ? -1 : 1;

>}

>$a=array (3,2,5,6,1);

>usort($a, "cmp");

>while(list($key,$val)=each($a)) {

> echo "$key: $valn";

>}


При выполнении будет напечатано:

0: 61: 52: 33: 24: 1

Пример многомерного массива:

>function cmp($a,$b) {

> return strcmp($a["fruit"],$b["fruit"]);

>};

>$fruit[0]["fruit"]="lemons";

>$fruit[1]["fruit"]="apples";

>$fruit[2]["fruit"]="grapes";


>usort($fruit, "cmp");


>while(list($key,$val)=each($fruit)) {

> echo "$fruit[$key]:".$val["fruit"]."n";

>}


При сортировке многомерных массивов $a и $b содержит ссылки на первый индекс массива.

Будет напечатано:

$fruit[0]: apples$fruit[1]: grapes$fruit[2]: lemons

Если необходимо отсортировать массив с различными вторыми ключами, можно поступить следующим образом:

>

>function arr_sort($a,$b) {

> list($key1,$val)=each($a);

> list($key2,$val)=each($b);

> return strcmp($a[$key1],$b[$key2]);

>};


>$arr[0]["1-ый элемент"]="яблока";

>$arr[1]["2-ый элемент"]="груша";

>$arr[2]["3-ый элемент"]="персик";

>$arr[3]["4-ый элемент"]="дыня";

>$arr[4]["5-ый элемент"]="малина";

>$arr[5]["6-ый элемент"]="ананас";


>usort($arr,"arr_sort");


>echo "

";

>print_r($arr);

>echo "

";

?>

Приведенный скрипт выведет следующее:

Array( [0] => Array ( [6-ый элемент] => ананас ) [1] => Array ( [2-ый элемент] => груша ) [2] => Array ( [4-ый элемент] => дыня ) [3] => Array ( [5-ый элемент] => малина ) [4] => Array ( [3-ый элемент] => персик ) [5] => Array ( [1-ый элемент] => яблока ))

Функция поддерживается PHP 3 =3.0.3, PHP 4, PHP 5


array_multisort


Сортировка нескольких массивов или многомерного массива.

Синтаксис:

bool array_multisort(array ar1, [, mixed arg [, mixed ... [, array ...]]])

Функция array_multisort() сортирует сразу несколько массивов или многомерные массивы с сохранением индексной ассоциации, возвращая true при отсутствии ошибок.

Исходные массивы рассматриваются как столбцы таблицы, сортируемой построчно. Поэтому массивы должны иметь одинаковое число элементов, и взаимосвязь между ними, как в строках таблицы, сохраняется. Приоритетом сортировки пользуются первые массивы. Флаги сортировки могут указваться для каждого массива, и их действие распространяется только на тот массив, после которого они указаны.

Флаги определения порядка сортировки:

Флаги типа сортировки:

Уазание несколько флагов сортировки после одного массива недопустимо. Флаги сортировки, которые переются после аргумента arr применяются только к этому аргументу. Если после следующего аргумента флаги не указаны, то принимаются флаги по умолчанию (SORT_ASC, SORT_REGULAR).

Пример использования функции array_multisort():

Сортировка нескольких массивов

>ar1 = array("10", 100, 100, "a");

>ar2 = array(1, 3, "2", 1);

>array_multisort($ar1, $ar2);

> // $ar1 = array("10", "a", 100, 100);

> // $ar2 = array(1, 1, "2", 3);


Элементы второго массива, соответствующие одинаковым элементам (100 и 100) первого массива, также отсортированны.

Сортировка многомерного массива

>$ar = array(array("10", 100, 100, "a"), array(1, 3, "2", 1));

>array_multisort($ar[0], SORT_ASC, SORT_STRING,

> $ar[1], $SORT_NUMERIC, SORT_DESC);


>// $ar[0] = ("10", 100, 100, "a") - сортируются как строки по возрастанию

>// $ar[1] = (1, 3, "2", 1) - сортируются как числа по убыванию


Функция поддерживается PHP 4, PHP 5

Курсор массива


reset


Производит сброс курсора массива.

Синтаксис:

mixed reset(array arr)

Функция reset() устанавливает внутренний курсор массива arr на его начало и возвращает значение начального элемента.


Еще от автора Неизвестный Автор
Галчонок

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Призраки ночи

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


Закат  вечности

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


mmmavro.org | День 131, Победа

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


mmmavro.org | День 132, Поэт

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Песнь о Нибелунгах

…«Песнь о Нибелунгах» принадлежит к числу наиболее известных эпических произведений человечества. Она находится в кругу таких творений, как поэмы Гомера и «Песнь о Роланде», «Слово о полку Игореве» и «Божественная комедия» Данте — если оставаться в пределе европейских литератур…В. Г. Адмони.


Рекомендуем почитать
Краткие тезисы по режиссуре кино

Некоторые тезисы из учебника Андрея Ангелова «Практическая режиссура кино». Народный бестселлер, и он же лонгселлер XXI века. Первый гениальный киноучебник не только в РФ, но и в мире…


Библиографический указатель трудов сотрудников Луганской агролесомелиоративной научно-исследовательской станции УкрНИИЛХА

Указатель содержит список печатных трудов, опубликованных сотрудниками Донецкой овражной лесной опытной станции и Луганской агролесомелиоративной научно-исследовательской станции УкрНИИЛХА. В списке приведено 340 наименований книг, монографий, брошюр, статей, тезисов докладов, нормативных материалов, указаний, буклетов, информационных листков. К списку прилагается авторский указатель.


Лауреаты российских литературных премий

В современной России дело с литературными премиями обстоит не очень хорошо. Вернее, они существуют, но не несут требуемого от них определяющего значения. Каждая из них — своё собственное направление, выбирающее литературу по заранее заданным условиям. Поэтому, дабы помочь читателю ориентироваться в мире российских литературных премий, выпущено данное издание. Первоначально взяты для рассмотрения лауреаты следующих премий: Русский Букер, Национальный бестселлер, Ясная поляна, Большая книга и НОС.


А. Куприн

Куприн не оставил крупных произведений, предпочитая форму рассказа, изредка позволяя ей перерасти до размера повести. В каждой работе Александр напоминал о своём присутствии, становясь для читателя приятным собеседником, направляющим ход мысли в требуемую ему сторону. Уже этим он достоин прозываться классиком русской литературы, насколько бы ни принижал созданное им наследие. Куприн выделялся из многих прозаиков честностью и стремлением показать человеческое желание жить в чуточку лучшем мире.



The Question. Самые странные вопросы обо всем

– Бывают ли крокодилы добрыми? – Кто на самом деле победил на выборах президента в 1996 году? – Может ли в мозгу закончиться место для памяти? – Почему в пупках возникают катышки? – Каково было учиться в советской школе? Эти и другие вопросы задавали пользователи сервиса The Question, а мы в течение последнего года каждый день искали тех, кто даст ответы. В этой книжке 297 самых странных вопроса. Мы не гарантируем, что вы станете умнее, если прочитаете ответы на них, но, по крайней мере, о потраченном времени вы не пожалеете. Книга может вызывать острые приступы любопытства.