
- •Разработка web – приложений на php
- •1. Цель работы 8
- •1. Цель работы 12
- •1. Цель работы 18
- •1. Цель работы 26
- •Введение
- •Переменные
- •Константы
- •Использование операций: вычисление итога по форме
- •Закрытие файла.
- •Закрытие файла.
- •Открытие файла
- •Запись в файл
- •Форматы файлов
- •Закрытие файла
- •Считывание из файла
- •Другие полезные файловые функции
- •Численно индексированные массивы
- •Ассоциативные массивы
- •Многомерные массивы
- •Сортировка массивов
- •Сортировка в обратном порядке
- •Сортировка многомерных массивов
- •Изменение порядка следования элементов в массивах
- •Загрузка массивов из файлов
- •Форматирование строк
- •Форматирование строк для представления
- •Объединение и разделение строк с помощью строковых функций
- •Сравнение строк
- •Сопоставление и замена подстрок с помощью строковых функций
- •Поиск строк в строках
- •Определение позиции подстроки
- •Замена подстрок
- •Задание
- •Контрольные вопросы
Ассоциативные массивы
В индексированных массивах PHP присваивает каждому элементу индекс по умолчанию, т.е. первый элемент получает индекс – 0, второй – 1 и т.д. В ассоциативных массивах с каждым значением можно связать любой ключ или индекс. Следующий код создает ассоциативный массив, в котором названия товаров используются в качестве ключей, а цены – в качестве значений.
$prices = array( “Tires”>=100, “Oil”>=10, “Spark Plugs”>=4);
Доступ к содержимому осуществляется через имя переменной и ключ: $prices[“Tires”], $prices[“Oil”], $prices[“Spark Plugs”]. Подобно численно индексированным массивам, ассоциативные массивы могут создаваться и инициализироваться по одному элементу.
Пример. Следующий код создает этот же массив $prices. Вместо создания массива с тремя элементами эта версия создает массив только с одним элементом, а затем добавляет в него еще два.
$prices = array( “Tires”>=100 );
$prices[“Oil”] = 10;
$prices[“Spark Plugs”] = 4;
Поскольку в ассоциативном массиве индексы не являются числами, для работы с массивом нельзя использовать простой счетчик в цикле for. Следующий цикл выводит содержимое нашего массива.
while ( $element = each( $prices ) )
{
echo $element["key"];
echo " - ";
echo $element["value"];
echo "<br>";
}
В приведенном примере встречается функция each(), которая раньше не встречалась. Эта функция возвращает текущий элемент массива и делает текущим следующий элемент. В этом примере функция $element является массивом. При вызове функции each() она предоставляет массив с четырьмя значениями и четырьмя индексами ячеек массива. Ячейки key и 0 содержат ключ текущего элемента, а ячейки value и 1 – значение текущего элемента.
Массив можно разделить на ряд значений, используя функцию list():
$list( $product, $price) = each( $prices );
Можно циклически просмотреть весь массив $prices, повторяя его содержимое, воспользовавшись следующим сценарием:
while ( $list( $product, $price) = each( $prices ))
echo “$product - $price<br>”;
Этот сценарий создает такой же вывод, что и предыдущий. Если в одном и том же сценарии элемент необходимо использовать дважды, то используется функция reset(), которая устанавливает текущий элемент на начало массива. Это позволит вновь выполнить просмотр массива.
Многомерные массивы
Массив не обязательно должен быть простым списком ключей и значений – каждая ячейка массива может содержать другой массив. Таким образом, можно создать двумерный массив.
Например, если бы для каждого товара, поставляемого компанией, требовалось хранить более одного вида информации, то для этого можно было бы воспользоваться двумерным массивом.
-
Code
Description
Price
TIR
Tires
100
OIL
Oil
10
SPK
Spark Plugs
4
Для определения данных в массиве, необходимо записать следующий код:
$products = array( array(“TIR”, “Tires”, 100),
array(“OIL”, “Oil”,10),
array(“SPK”, “Spark Plugs”, 4));
Каждый элемент такого массива имеет два индекса. Для отображения содержимого массива можно вручную обратиться к каждому из элементов.
echo “│”.$products[0][0].”│”.$products[0][1].”│”.$products[0][2].”│<BR>”
Или же для получения этого же результата можно было бы использовать циклы for:
for ( $row = 0; $row < 3; $row++ )
{
for ($column = 0; $column < 3; $column++ )
{
echo “│”.$products[$row][$column];
}
echo “│<BR>”;
}
Обе версии этого кода создают в окне браузера одинаковый вывод:
│TIR│Tires│100│
│OIL│Oil│10│
│SPK│Spark Plugs│4│
В том случае, если вместо номеров столбцов предпочтительнее создать их имена используют ассоциативные массивы.
$products = array( array( Code => “TIR”,
Description => “Tires”,
price =>100
),
array(Code => “OIL”,
Description => “Oil”,
price => 10
),
array(Code => “SPK”,
Description => “Spark Plugs”,
price => 4
)
);
При использовании ассоциативных массивов, не приходится запоминать, что элемент хранится в ячейке [x][y]. Данные можно легко найти, обратившись к ячейке с осмысленными именами строки и столбца.
Однако при этом утрачивается возможность использования простого цикла for. В нашем примере с помощью цикла for можно просмотреть внешний численно индексированный массив $products. Каждая строка в этом массиве – ассоциативный массив и для его просмотра потребуется уже цикл while.
for ( $row = 0; $row < 3; $row++ )
{
while ( list( $key, $value ) = each ($products [$row] ) )
{
echo “│$value”;
}
echo “│<BR>”;
}
Не обязательно ограничиваться двумя измерениями – так же, как элементы массива могут содержать другие массивы, эти массивы в свою очередь, могут содержать другие массивы.
Трехмерный массив имеет высоту, ширину и глубину. Например, все товары компании можно дополнительно разделить на категории (одна категория – легковые автомобили, другая – грузовые и т.д.).
Способ создания многомерных массивов позволяет создавать четырех-, пяти-, или шестимерные массивы. Правила синтаксиса языка не налагают никаких ограничений.