
- •Разработка web – приложений на php
- •1. Цель работы 8
- •1. Цель работы 12
- •1. Цель работы 18
- •1. Цель работы 26
- •Введение
- •Переменные
- •Константы
- •Использование операций: вычисление итога по форме
- •Закрытие файла.
- •Закрытие файла.
- •Открытие файла
- •Запись в файл
- •Форматы файлов
- •Закрытие файла
- •Считывание из файла
- •Другие полезные файловые функции
- •Численно индексированные массивы
- •Ассоциативные массивы
- •Многомерные массивы
- •Сортировка массивов
- •Сортировка в обратном порядке
- •Сортировка многомерных массивов
- •Изменение порядка следования элементов в массивах
- •Загрузка массивов из файлов
- •Форматирование строк
- •Форматирование строк для представления
- •Объединение и разделение строк с помощью строковых функций
- •Сравнение строк
- •Сопоставление и замена подстрок с помощью строковых функций
- •Поиск строк в строках
- •Определение позиции подстроки
- •Замена подстрок
- •Задание
- •Контрольные вопросы
Сортировка массивов
Использование функции sort()
Следующий код приводит к упорядочению массива в алфавитном порядке:
$products = array (“Tires”, Oil”, Spark Plugs”);
sort($products);
Теперь элементы массива будут расположены в следующем порядке: Oil, Spark Plugs, Tires.
С помощью данной функции можно упорядочивать значения и в цифровом порядке. Например, массив, содержащий цены на товары. Необходимо помнить, что функция sort() зависит от регистра, т.е. прописные буквы предшествуют строчным.
Использование функций asort() и ksort()
Если для хранения информации о товарах и их ценах используется ассоциативный массив, нужно использовать другие функции сортировки, обеспечивающее совместное сохранение ключей и значений при сортировке. Пример
$prices = array( “Tires” => 100, “Oil” => 10, “Spark Plugs” >= 4);
asort($prices);
Функция asort() упорядочивает массив в соответствии со значениями элементов. В данном массиве значения – это цены, а ключи – текстовые описания. Если сортировку следует выполнить не по ценам, а по описаниям, следует использовать функцию ksort().
Сортировка в обратном порядке
Каждая из рассмотренных ранее функций имеет соответствующую ей функцию, выполняющую сортировку массива в порядке убывания. Это rsort(), arsort() и krsort().
Сортировка многомерных массивов
Сортировка массивов, имеющих более одного измерения более сложна. В PHP имеется возможность сравнения двух чисел или двух текстовых строк, но в многомерном массиве каждый элемент является массивом. В PHP отсутствует возможность сравнения двух массивов, поэтому для их сравнения необходимо создать метод.
Мы рассматривали двумерный массив, в котором хранились названия товаров их коды и цены.
$products = array( array(“TIR”, “Tires”, 100),
array(“OIL”, “Oil”,10),
array(“SPK”, “Spark Plugs”, 4));
Каков будет порядок значений, если выполнить сортировку в этом массиве? Существует два полезных порядка сортировки. Товары можно упорядочить в алфавитном порядке по описаниям или в цифровом порядке по ценам. И то, и другое возможно. Для этого необходимо использовать функцию usort() и указать PHP, как следует сравнивать элементы. Для этого потребуется создать собственную функцию сравнения.
Следующий код выполняет сортировку этого массива в алфавитном порядке по значению второго столбца – описания.
function compare($x, $y)
{
if ( $x[1] ==$y[1] )
return 0;
else if ( $x[1] < $y[1] )
return –1;
else
return 1;
}
usort($products, compare);
Назначение данной функции – принять два значения (два аргумента x и y) и определить их порядок. Применительно к рассмотренному примеру параметрами x и y будут два массива внутри основного массива, каждый из которых представляет один из товаров. Чтобы обратиться к элементу Description массива x, необходимо ввести $x[1], поскольку Description – второй элемент в этом массиве, а нумерация начинается с нуля. Когда функция завершает работу, она может сообщить ответ вызвавшему ее коду. Это значение называется возвращаемым. Для возврата значения в функции используется ключевое слово return. Например, строка return 1; возвращает значение 1 коду, вызвавшему функцию.
Чтобы она могла использоваться функцией usort(), функция compare() должна сравнивать x и y. В зависимости от их значений рассмотренная функция будет возвращать значения 0, 1 или –1.
Символ “u” в имени usort() означает пользовательская, поскольку этой функции требуется определенная пользователем функция сравнения. Аналогичные обозначения используются для всех функций сортировки рассмотренных ранее. Для выполнения сортировки многомерных массивов в обратном порядке пользователю необходимо создать функцию сравнения, которые будет возвращать противоположные значения.
function compare1($x, $y)
{
if ( $x[2] ==$y[2] )
return 0;
else if ( $x[2] < $y[2] )
return 1;
else
return -1;
}
usort($products, compare1);
Теперь вызов функции usort() приведет к упорядочению массива в порядке убывания цен.