Массивы в PHP (часть 2) пользовательские ключи

Массивы в PHP (часть 2) - пользовательские ключи

В первой части урока по работе с массивами мы говорили о том, как создать новый, как пройти через них с помощью циклов (for и foreach) и что у них есть ключи..

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

PHP также позволяет нам определять индексы элементов в массиве. Это делается одной такой стрелкой: =.

Ручная установка ключей

Например, если мы хотим использовать вышеуказанный массив, но «воскресенье» имеет самый низкий индекс (как в США), то мы могли бы написать:

// каждый элемент массива помещается в новую строку для // лучшей читаемости; нет проблем с их записью // ошибок не будет $ days_of_week = array (1 => ‘Monday’, 2 => ‘Tuesday’, 3 => ‘Wednesday’, 4 => ‘Thursday’, 5 => ‘Friday ‘, 6 =>’ Суббота ‘, 0 =>’ Воскресенье ‘);

Помните, что элементы имеют нулевую индексацию, поэтому «понедельник» равен 1, а «воскресенье» — 0..

Различия в порядке for и foreach

Если мы используем цикл for в приведенном выше массиве, «воскресенье» будет первым днем ​​в исходном коде. Это связано с тем, что мы начинаем со значения переменной 0. Но если мы используем цикл foreach, PHP представит элементы в том порядке, в котором они были определены, без сортировки по индексу. Это одна из особенностей PHP..

Поскольку в большинстве случаев мы хотим, чтобы элементы обрабатывались в том порядке, в котором они были определены, для их обхода лучше использовать цикл foreach..

Читать также:  Начало работы с JavaScript Возможности

Совершенно произвольные числовые индексы

Более того, при определении списка мы даже можем пропустить элемент. Например, если мы хотим описать только дни, когда ходим в спортзал, мы можем использовать:

$ gym_days = array (1 => ‘вторник’, 3 => ‘четверг’);

В этом примере у нас есть только два элемента — «вторник» и «четверг», но мы по-прежнему сохраняем индексы, соответствующие их порядковому номеру в день недели (если он начинается в понедельник и имеет нулевую индексацию)..

Таким образом, с циклом foreach у нас не будет никаких проблем, но с простым циклом for даже для элемента номер 0 PHP выдаст нам ошибку, заключающуюся в том, что мы пытаемся получить доступ к неопределенному элементу. Вдобавок ко всему, и если мы используем count (), чтобы определить, до какого максимального индекса мы должны увеличить переменную из цикла for, это вернет 2, поскольку в индексе всего 2 элемента, хотя у нас есть элемент с индексом 3 и даже не будет в наличии.

Допустим, мы все еще хотим усложнять себе жизнь и не хотим использовать foreach — что мы можем сделать?

Некоторые функции для работы с массивами

Для начала — давайте определим максимальный ключ в массиве, чтобы мы знали, сколько считать.

Кроме того, давайте определим минимум, чтобы мы не начинали с 0 (что, как мы уже говорили, приведет к ошибке), а начинали со значения 1, которое в данном случае является начальным..

Почему бы просто не сделать:

for ($ i = 1; $ i 3; $ i + = 2) {…}

Читать также:  Доступный слайдер 1/2

Потому что это будет работать только с верхним массивом, и идея состоит в том, чтобы наш цикл не зависел от структуры массива. Таким образом, со временем, если фитнес-дни меняются, остальная часть кода остается прежней. Иначе — зачем вообще писать программный код? Давай просто сделаем то, что мы хотим сделать в эти два дня, и все кончено.

max () и min ()

Эти два значения можно найти с помощью функций max () и min () соответственно. Мы можем запускать неограниченное количество аргументов для этих двух функций, и они возвращают максимальное / минимальное значение. Или мы можем запустить аргумент, представляющий собой массив. Он, в свою очередь, может иметь неограниченное количество аргументов. Нам также нужно запустить второй аргумент функции. Функция по-прежнему должна возвращать наибольшее / наименьшее значение.

Проблема в том, что в настоящее время мы ищем не минимальное и максимальное значение, а минимальный и максимальный ключ..

array_keys ()

К счастью, в PHP есть функция, которая с помощью массива может возвращать новый, содержащий значения ключей из первого. Я понимаю, что это может показаться запутанным, поэтому давайте рассмотрим пример:

$ gym_days = array (1 => ‘вторник’, 3 => ‘четверг’);
$ day_keys = array_keys ($ спортзал_дней); // значение $ day_keys будет array (1, 3)

Я надеюсь, что так все обретет элементарный смысл.

Затем мы можем использовать функции min () и max (), чтобы узнать, какое наименьшее, а какое наибольшее значение в этом массиве..

Теперь мы можем написать:

$ gym_days = array (1 => ‘вторник’, 3 => ‘четверг’);
$ day_keys = array_keys ($ спортзал_дней);
$ min = min ($ day_keys); $ max = max ($ day_keys);
echo ‘ul>’;
for ($ i = $ min; $ i = $ max; $ i ++) {echo ‘li>’. $ gym_days [$ i]. ‘/ li>’; }
эхо ‘/ ul>’;

Читать также:  Начало работы с JavaScript часть 3

Однако остается проблема ошибки в случае, когда мы перебираем значение 2 (отсутствует в этом массиве).

Проверить наличие существующего элемента

Что мы можем сделать, так это просто проверить, есть ли такой элемент, а если нет — продолжить цикл со следующим значением:

$ gym_days = array (1 => ‘вторник’, 3 => ‘четверг’);
$ day_keys = array_keys ($ спортзал_дней);
$ min = min ($ day_keys); $ max = max ($ day_keys);
echo ‘ul>’;
for ($ i = $ min; $ i = $ max; $ i ++) {if (! isset ($ gym_days [$ i])) {продолжить; }
эхо ‘ли>’. $ gym_days [$ i]. ‘/ li>’; }
эхо ‘/ ul>’;

Продолжать

Цикл продолжения в цикле сообщает PHP перейти к телу цикла и перейти непосредственно к выполнению со следующей итерации (что произойдет со следующим значением).

Мы можем просто написать:


for ($ i = $ min; $ i = $ max; $ i ++) {if (isset ($ gym_days [$ i])) {echo ‘li>’. $ gym_days [$ i]. ‘/ li>’; }}

что в данном случае то же самое. Но с более длинным телом и / или большим количеством проверок предыдущее выражение может быть более читаемым. Через него мы углубляемся на несколько уровней в углубление (в другой раз мы скажем, что если вы вложите более трех уровней — что-то, вероятно, не так, как должно быть).

Скоро будет часть 3, в которой мы увидим, какие еще настраиваемые ключи мы можем использовать в PHP..

Понравилась статья? Поделиться с друзьями:
Что нужно знать пользователю?