У меня есть массив с такой структурой:
$months = array(
MM => array(
'start' => DD,
'end' => DD,
'type' => (string),
'amount'=> (float),
),
);
ММ — месяц (01-12, строка), ДД — день месяца (01-31, строка). Не все месяцы могут быть в массиве. Для каждого месяца существует переменное количество подмассивов с диапазонами с уникальными днями в каждом. Например, у месяца есть три подмассива с тремя диапазонами дней, но дни, используемые в этих диапазонах, никогда не будут перекрываться или дублироваться, каждое значение DD уникально. За тем единственным исключением, что в некоторых диапазонах «начало» и «конец» могут совпадать (один и тот же день ДД), но никогда не будет двух одинаковых «начальных» дней или двух одинаковых «конечных» дней для каждого месяца.
Мне нужно использовать этот массив, зацикливая месяцы и дни в каждом месяце. Зацикливая каждый день месяца, мне нужно проверить, совпадает ли этот конкретный день в «начале» или «конце». Если совпадение верно, мне также нужно получить соседние значения.
При этом я столкнулся с одной проблемой: как мне узнать индекс ключа подмассива, где есть такое совпадение? Например, как я узнаю, идет ли матч
$months['09'][3]['start'] == $current_day_in_loop;
или скорее:
$months['09'][6]['start'] == $current_day_in_loop;
или еще один ключ?
Поскольку я не знаю, сколько диапазонов существует для каждого месяца, ключ индекса является переменным или может вообще не быть. Как узнать, находится ли совпадающее значение на ключе [3]
или [6]
? Как только я узнаю ключ, я могу использовать его для поиска соседних значений в одном и том же подмассиве.