Вход/Регистрация
Курс "Язык программирования PHP"
вернуться

Савельева Нина Владимировна

Шрифт:

Функция array_unique

Функция array_unique(массив) удаляет повторяющиеся значения из массива и возвращает новый массив. Таким образом, вместо нескольких одинаковых значений и их ключей мы имеем одно значение. Какой у него будет ключ? Как из нескольких ключей одинаковых элементов выбирается тот, который будет сохранен в новом массиве? Происходит следующее. Все элементы массива преобразуются в строки и сортируются. Затем обработчик запоминает первый ключ для каждого значения, а остальные ключи игнорирует.

Попробуем избавиться от повторяющихся языков в списке изученных.

<?php

$langs =

array("Lisp","Java","Python","Java",

"PHP","Perl","Lisp");

print_r(array_unique($langs));

?>

Получим следующее:

Array ( [0] => Lisp [1] => Java [2]

=> Python [4] => PHP [5] => Perl )

Далее рассмотрим задачу сортировки массива.

Сортировка массивов

Необходимость сортировки данных, в том числе и данных, хранящихся в виде массивов, очень часто возникает при решении самых разнообразных задач. Если в языке Си для того, чтобы решить эту задачу, нужно написать десятки строк кода, то в PHP это делается одной простой командой.

Функция sort

Функция sort имеет следующий синтаксис

sort (массив [, флаги])

и сортирует массив, т.е. упорядочивает его значения по возрастанию. Эта функция удаляет все существовавшие в массиве ключи, заменяя их числовыми индексами, соответствующими новому порядку элементов. В случае успешного завершения работы она возвращает true, иначе – false.

Пример 7.6. Пусть у нас есть два массива: цены товаров – их названия и, наоборот, названия товаров – их цены. Упорядочим эти массивы по возрастанию:

$items = array(10 => "хлеб", 20 => "молоко",

30 => "бутерброд");

sort($items);

// строки сортируются в алфавитном

// порядке, ключи теряются

print_r($items);

$rev_items = array("хлеб" => 10,

"бутерброд" => 30, "молоко" => 20);

sort($rev_items);

// числа сортируются по возрастанию,

// ключи теряются

print_r($rev_items);

?>

Получим:

Array ( [0] => бутерброд [1] =>

молоко [2] => хлеб )

Array ( [0] => 10 [1] => 20 [2] => 30 )

В качестве дополнительного аргумента флаги может использоваться одна из следующих констант:

– SORT_REGULAR – сравнивать элементы массива обычным образом;

– SORT_NUMERIC – сравнивать элементы массива как числа;

– SORT_STRING – сравнивать элементы массива как строки.

Функции asort, rsort, arsort

Если требуется сохранять индексы элементов массива после сортировки, то нужно использовать функцию asort (массив [, флаги]). Если необходимо отсортировать массив в обратном порядке, т.е. от наибольшего значения к наименьшему, то можно задействовать функцию rsort (массив [, флаги]). А если при этом нужно еще и сохранить значения ключей, то следует использовать функцию arsort(массив [, флаги]). Как вы, наверное, заметили синтаксис у этих функций абсолютно такой же, как у функции sort. Соответственно и значения флагов могут быть такими же, как у sort: SORT_REGULAR, SORT_NUMERIC, SORT_STRING. Кстати говоря, флаг SORT_NUMERIC появился только в PHP4.

<?php

$books = array("Пушкин"=>"Руслан и Людмила",

"Толстой"=>"Война и мир",

"Лермонтов"=>"Герой нашего времени");

asort($books);

// сортируем массив,

// сохраняя значения ключей

print_r($books);

echo "<br>";

rsort($books);

// сортируем массив в обратном порядке,

  • Читать дальше
  • 1
  • ...
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: