Доброго времени суток, Помогите, пожалуйста, решить следующую задачу. Есть динамический массив: PHP: Array ( [0] => Array ( [id] => 4 [header] => Глава 1. ) [1] => Array ( [id] => 5 [header] => Глава 2. ) [2] => Array ( [id] => 12 [header] => Глава 3. ) [3] => Array ( [id] => 44 [header] => Глава 4. ) ) И динамическое(ключевое) значение одного из элементов массива (например id->5) Нужно получить значения id массивов выши и ниже ключевого, то есть 4 и 12 в виде обычной переменной. P.S> Можно кидать тапками. P.S>>Если интересно зачем это всё, то эти id(4 и 12) являются ссылками на следующую и предыдущую страницы для навигации.
У нас тут принято форматировать код. 1 балл на месяц. Ура. Рекомендую тебе так же научиться пользоваться мануалом. Есть готовая функция получения ключа с нужным тебе массивом, есть функция позиционирования на предыдущем и следующем ключе. Ура.
Я всё удалил, когда терпение закончилось. На форуме пишу в крайнем случае. Из последнего перебирал массив foreach, но в нём невозможно сместить ключ функциями prev, next.
Я тебя понял. Сам ты делать не хочешь. Можешь купить готовый код - тема переезжает во "фриланс". Денег нет - тема переезжает в "за меня". Переезжает по-любому. От тебя зависит куда.
Тема для новичков и если тебе лениво нажать пару кнопок, но при этом ты с удовольствием любишь поучить других, то будь добр, проходи мимо.
Да, для новичков. Но для тех, которые хотят учиться. И не удаляют код чтоб нечего было показать. Не хочешь учиться - проходи мимо раздела новичков. Ты к ним относишься только скилом. Желаниями ты относишься к халявщикам из "за меня". Туда тема и переезжает.
PHP: <?php // Объявляем пустышки предыдущего и следующего элементов. $prev = $next = null; // Объявляем массив. Я задрался его перегонять из формата print_r в человеческий. // Научись var_export. $a = [ [ 'id' => '4', 'header' => 'Глава 1.', ], [ 'id' => '5', 'header' => 'Глава 2.', ], [ 'id' => '12', 'header' => 'Глава 3.', ], [ 'id' => '44', 'header' => 'Глава 4.', ], ]; // Ищем айдишник. $ck = array_search('12', array_column($a, 'id')); // Предыдущий будет иметь ключ на единицу меньше найденного. $pk = $ck-1; // Проверяем выход за границу массива слева. // Меньше нулевого офсета быть не может. if (0 <= $pk) { // Вот он наш предыдущий элемент. $prev = $a[$pk]; } // Следующий будет иметь ключ на единицу больше найденного. $nk = $ck+1; // Проверяем выход за границу массива справа. // Больше длины массива офсет быть не может. if (count($a) > $nk) { // Вот он наш следующий элемент. $next = $a[$nk]; } // Напечатаем же их на экранчик. var_dump($prev, $next); # eof Код (Text): array(2) { ["id"]=> string(1) "5" ["header"]=> string(13) "Глава 2." } array(2) { ["id"]=> string(2) "44" ["header"]=> string(13) "Глава 4." } Спасибки. А тебе и дальше оставаться таким же ленивым. Ну и возможно тупым. Лайкнуть не забуть.
Спасибо, лайкнул. Да я нуб и только учу php, поэтому опытным программистам любой вопрос может казаться глупым. К текущему моменту я разобрался получше и непонятным момент осталось только то, как найти линейный индекс массива по какому-либо его значению. Я полагаю, что эту функцию выполняет данная вами строчка, но у меня, к сожалению php 5.3 и нет функции array_column. PHP: $ck = array_search('12', array_column($a, 'id')); id выше и ниже я найду так: Код (Text): $a[i+1]['id']; $a[i-1]['id'];
Обновись. 5.3 давно умерла. Текущая актуальная - 7.0. Из пятёрок - 5.6 уже доживает. Это касательно отсутствия функции. Нуб ты не только в пыхе но и в программировании в целом. Всё что я написал - простой алгоритм взаимодействия с массивом данных. Не более того. Можно придумать еще несколько вариантов. И некоторыми из них обойти отсутствие нужных функций на том говне мамонта, которым ты пользуешься.