к оглавлению

Функции сортировки массивов

sort() 
rsort() 
asort() 
arsort() 
ksort() 
krsort() 
array_reverse() 
shuffle() 
natsort() 

sort()

Функция сортировки массива по возрастанию.

Синтаксис:

void sort(array array [, int sort_flags])

Функция сортирует массив array по возрастанию. Необязательный аргумент sort_flags указывает как именно должны сортироваться элементы (задает флаги сортировки). Допустимыми значениями этого аргумента являются следующие:

Вообще говоря, эта функция предназначена для сортировки списков. Под списком понимается массив, ключи которого начинаются с нуля и не имеют пропусков. Функция sort() воспринимает любой массив как список.

Рассмотрим примерчик.

Пример:

<?php
   $arr = array("2", "1", "4", "3","5");
   sort($arr);
   for($i=0; $i < count($arr); $i++)
   {
      echo ("$i:$arr[$i]  ");
   } 
   // выводит "0:1 1:2 2:3 3:4 4:5"
?>

Результат:

0:1 1:2 2:3 3:4 4:5

Заметим такую вещь. Если вы сортируете строки, т.е, к примеру, массив выглядит вот так

   array("one", "two", "abs", "three", "uic", "for","five");

то эта чудо-функция вернет вам следующее:

Результат:

0:abs 1:five 2:for 3:one 4:three 5:two 6:uic

Т.е. строки она сортирует в так называемом альфа-бета порядке, попросту говоря – по старшинству первой буквы в алфавите.


rsort()

Сортировка массива по убыванию.

Синтаксис:

void rsort(array arr [, int sort_flags])

Аналогична функции sort(), только сортирует по убыванию. Выполним тот же скрипт, что и для функции sort(), только вместо sort($arr) поставим rsort($arr).

Результат:

0:5 1:4 2:3 3:2 4:1

asort()

Сортировка ассоциативного массива по возрастанию.

Синтаксис:

void asort(array arr [, int sort_flags])

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

Пример:

<?php
   $arr = array("a" =>"one","b" => "two","c" => "three","d" => "four");
   asort($arr);
   foreach($arr as $key => $val) 
   {
      echo (" $key => $val ");
   }
?>

Результат:

d => four a => one c => three b => two

Т.е., как видим, связи "ключ-значение" сохранились.

По умолчанию функция asort() сортирует массив в алфавитном порядке. Значения флагов сортировки sort_flags приведены в описании функции sort().


arsort()

Сортировка ассоциативного массива по убыванию.

Синтаксис:

void arsort(array arr [, int sort_flags])

Эта функция аналогична функции asort(), только она упорядочивает массив не по возрастанию, а по убыванию.


ksort()

Сортировка массива по возрастанию ключей.

Синтаксис:

int ksort(array arr [, int sort_flags])

В этой функции сортировка осуществляется не по значениям, а по ключам в порядке их возрастания.

<?php
   $arr = array("a" =>"one","b" => "two","c" => "three","d" => "four");
   ksort($arr);
   foreach($arr as $key => $val) 
   {
      echo (" $key => $val ");
   }
?>

Результат:

a => one b => two c => three d => four

krsort()

Сортировка массива по убыванию индексов.

Синтаксис:

int krsort(array arr [, int sort_flags])

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


array_reverse()

Расстановка элементов массива в обратном порядке.

Синтаксис:

array array_reverse(array arr [, bool preserve_keys])

Функция array_reverse() возвращает массив, элементы которого следуют в обратном порядке относительно массива arr, переданного в параметре. При этом связи между ключами и значениями сохраняются. Можно еще необязательный параметр preserve_keys сделать true, тогда в обратном порядке переставятся еще и ключи.

Своруем идейку примерчика на эту функцию из php-шного мануала:

<?php
   $arr = array ("php", 4.0, array ("green", "red"));
   $result = array_reverse ($arr);
   echo "Массив: <br>";   
   foreach($result as $key => $val) 
   {
      echo ("$key => $val <br>");
   }
   echo("<br>");
   echo "Сортированный массив: <br>";      
   $result_keyed = array_reverse ($arr, false);
   foreach($result_keyed as $key => $val) 
   {
      echo ("$key => $val<br> ");
   }
?>

Т.е., что получилось:

В первом случае:

Результат:

Массив:
0 =>Array
1 =>4
2 =>php

Сортированный массив:
0 =>Array
1 =>4
2 =>php

А если еще и второй параметр как true засобачить, то вот что выйдет:

Результат:

Массив:
0 =>Array
1 =>4
2 =>php

Сортированный массив:
2 =>Array
1 =>4
0 =>php

shuffle()

Перемешивание элементов массива случайным образом.

Синтаксис:

void shuffle(array arr)

Функция shuffle() перемешивает элементы масиива arr случайным образом.


natsort()

Выполняет "естественную" сортировку массива.

Синтаксис:

void natsort(array arr)

С такой сортировкой мы уже встречались, когда работали со строками. Поработаем с ней еще разок. Как помните, под естественной сортировкой понимается сортировка таким образом, когда элементы того, что сортируется располагаются в "понятном" для человека порядке.

Пример:

<?php
   $array1 = $array2 = array("pict10.gif", "pict2.gif", "pict20.gif", "pict1.gif");
   echo ("обычная сортировка:"); echo ("<br>");
   sort($array1);
   print_r($array1);
   echo ("<br>"); echo ("естественная сортировка:"); echo ("<br>");
   natsort($array2);
   print_r($array2);
?>

Результат:

обычная сортировка:
Array ( [0] => pict1.gif [1] => pict10.gif [2] => pict2.gif [3] => pict20.gif )
естественная сортировка:
Array ( [3] => pict1.gif [1] => pict2.gif [0] => pict10.gif [2] => pict20.gif )
к оглавлению

Знаете ли Вы, почему "черные дыры" - фикция?
Согласно релятивистской мифологии, "чёрная дыра - это область в пространстве-времени, гравитационное притяжение которой настолько велико, что покинуть её не могут даже объекты, движущиеся со скоростью света (в том числе и кванты самого света). Граница этой области называется горизонтом событий, а её характерный размер - гравитационным радиусом. В простейшем случае сферически симметричной чёрной дыры он равен радиусу Шварцшильда".
На самом деле миф о черных дырах есть порождение мифа о фотоне - пушечном ядре. Этот миф родился еще в античные времена. Математическое развитие он получил в трудах Исаака Ньютона в виде корпускулярной теории света. Корпускуле света приписывалась масса. Из этого следовало, что при высоких ускорениях свободного падения возможен поворот траектории луча света вспять, по параболе, как это происходит с пушечным ядром в гравитационном поле Земли.
Отсюда родились сказки о "радиусе Шварцшильда", "черных дырах Хокинга" и прочих безудержных фантазиях пропагандистов релятивизма.
Впрочем, эти сказки несколько древнее. В 1795 году математик Пьер Симон Лаплас писал:
"Если бы диаметр светящейся звезды с той же плотностью, что и Земля, в 250 раз превосходил бы диаметр Солнца, то вследствие притяжения звезды ни один из испущенных ею лучей не смог бы дойти до нас; следовательно, не исключено, что самые большие из светящихся тел по этой причине являются невидимыми." [цитата по Брагинский В.Б., Полнарёв А. Г. Удивительная гравитация. - М., Наука, 1985]
Однако, как выяснилось в 20-м веке, фотон не обладает массой и не может взаимодействовать с гравитационным полем как весомое вещество. Фотон - это квантованная электромагнитная волна, то есть даже не объект, а процесс. А процессы не могут иметь веса, так как они не являются вещественными объектами. Это всего-лишь движение некоторой среды. (сравните с аналогами: движение воды, движение воздуха, колебания почвы). Подробнее читайте в FAQ по эфирной физике.

НОВОСТИ ФОРУМАФорум Рыцари теории эфира
Рыцари теории эфира
 14.10.2019 - 19:26: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Вячеслава Осиевского - Карим_Хайдаров.
14.10.2019 - 03:09: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Марины Мелиховой - Карим_Хайдаров.
13.10.2019 - 18:09: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Светланы Вислобоковой - Карим_Хайдаров.
13.10.2019 - 08:05: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Декларация Академической Свободы - Карим_Хайдаров.
13.10.2019 - 08:03: ЭКОЛОГИЯ - Ecology -> Биохимия мозга от проф. С.В. Савельева и не только - Карим_Хайдаров.
12.10.2019 - 07:03: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Константина Сёмина - Карим_Хайдаров.
11.10.2019 - 08:59: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от О.Н. Четвериковой - Карим_Хайдаров.
11.10.2019 - 06:24: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> Проблема государственного терроризма - Карим_Хайдаров.
11.10.2019 - 03:57: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> ЗА НАМИ БЛЮДЯТ - Карим_Хайдаров.
11.10.2019 - 03:33: ЭКОЛОГИЯ - Ecology -> ЭКОЛОГИЯ ДЛЯ ВСЕХ - Карим_Хайдаров.
11.10.2019 - 03:22: ЭКОЛОГИЯ - Ecology -> Глобальное потепление - миф или... миф? - Карим_Хайдаров.
09.10.2019 - 19:01: ТЕОРЕТИЗИРОВАНИЕ И МАТЕМАТИЧЕСКОЕ МОДЕЛИРОВАНИЕ - Theorizing and Mathematical Design -> ФУТУРОЛОГИЯ - прогнозы на будущее - Карим_Хайдаров.
Bourabai Research Institution home page

Bourabai Research - Технологии XXI века Bourabai Research Institution