
- •Установка и настройка по
- •Установка Apache 1.3.29 под Windows xp
- •Установка php 4.3.4 под Windows
- •Дистрибутив Денвер
- •Первая php-программа
- •Синтаксис
- •Переменные, константы и операторы
- •Переменные
- •Константы
- •Типы данных
- •Тип boolean (булев или логический тип)
- •Тип integer (целые)
- •Тип float (числа с плавающей точкой)
- •Тип string (строки)
- •Одинарные кавычки
- •Двойные кавычки
- •Heredoc
- •Тип array (массив)
- •Определение при помощи array()
- •Определение с помощью синтаксиса квадратных скобок
- •Управляющие конструкции Условные операторы Оператор if
- •Оператор else
- •Оператор elseif
- •Do... While
- •Foreach
- •Операторы передачи управления
- •Continue
- •Операторы включения
- •Include
- •Require
- •Обработка запросов с помощью php
- •Протокол http и способы передачи данных на сервер
- •Форма запроса клиента
- •Использование html-форм для передачи данных на сервер
- •Для метода get
- •Для метода post
- •Обработка запросов с помощью php
- •Пример обработки запроса с помощью php
- •Заключение
- •Функции в php
- •Аргументы функций
- •Списки аргументов переменной длины
- •Возвращаемые значения
- •Возвращение ссылки
- •Переменные функции
- •Объекты и классы в php
- •Инициализация переменных
- •Объекты
- •Наследование extends
- •Конструкторы
- •Оператор ::
- •Оператор parent
- •Объектная модель php5
- •Решение задачи
- •Заключение
- •Функция in_array
- •Функция array_search
- •Функция array_keys
- •Функция array_unique
- •Сортировка массива по ключам
- •Сортировка с помощью функции, заданной пользователем
- •Работа со строками
- •Выделение подстроки Функция strstr
- •Функция substr
- •Функция substr_replace
- •Проверка существования файла
- •Функция file_exists
- •Функция is_writable
- •Функция is_readable
- •Базы данных и субд. Введение в sql
- •Взаимодействие php и MySql
- •Выбор базы данных
- •Получение списка полей таблицы
- •Отображение списка полей в html-форму
- •Авторизация доступа с помощью сессий
- •Регулярные выражения
- •Взаимодействие php и xml
- •Обход дерева объектов
- •Добавление новых элементов в xml-документ
- •Заключение
- •Использование шаблонов в 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); ?>
Пример 7.6. Применение функции sort() (html, txt) Получим: Array ( [0] => бутерброд [1] => молоко [2] => хлеб ) Array ( [0] => 10 [1] => 20 [2] => 30 )
В качестве дополнительного аргумента флаги может использоваться одна из следующих констант:
Функции 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); // сортируем массив в обратном порядке, // ключи будут заменены print_r($books); ?>
Пример 7.7. Применение функций asort, rsort, arsort (html, txt) В результате работы этого скрипта получим: Array ( [Толстой] => Война и мир [Лермонтов] => Герой нашего времени [Пушкин] => Руслан и Людмила ) Array ( [0] => Руслан и Людмила [1] => Герой нашего времени [2] => Война и мир )
Пример 7.8.Допустим, мы создаем каталог описаний документов. У каждого документа есть автор, название, дата публикации и краткое содержание. Мы уже не раз отображали описания, составленные из этих характеристик. Каждый раз порядок отображения этих элементов зависел от созданной нами программы. Теперь же мы хотим иметь возможность изменять порядок отображения элементов по желанию пользователя. Составим для этого следующую форму: <form action=task.php> <table border=1> <tr><td>Название </td><td><input type=text name=title size=5> </td></tr> <tr><td>Краткое содержание </td><td><input type=text name=description size=5> </td></tr> <tr><td>Автор </td><td><input type=text name=author size=5> </td></tr> <tr><td>Дата публикации </td><td><input type=text name=published size=5></td></tr> </table> <input type=submit value="Отправить"> </form>
Пример 7.8a. Форма для примера 7.8 (html, txt) Будем упорядочивать данные, переданные этой формой, по убыванию их значений, сохраняя при этомзначенияключей. Для этого удобно воспользоваться функциейarsort(). Поскольку нам важен только новый порядок элементов, сохраним в новоммассивеключиисходногомассивав нужном порядке. Мы сохраняемключиисходногомассива, поскольку они являются именами элементов, из которых конструируется описание документа, а помнить их важно. Итак, получаем такой скрипт: <?php print_r($_GET); echo "<br>"; arsort ($_GET); // сортируем массив в обратном порядке, // сохраняя ключи print_r($_GET); echo "<br>"; $ordered_names = array_keys($_GET); // составляем новый массив foreach($ordered_names as $key => $val) echo "$key :$val <br>"; // выводим элементы нового массива ?>
Пример 7.8b. Программа обработки формы из примера 7.8 (html, txt) |
|