Phpnoobu, откуда этот массив берется? Если из БД, то лучше для навигации перейти на обычную последовательную нумерацию, сохраняя реальные id только для непосредственного доступа к данным, ассоциированным с этими id. Даже если у вас массив в файлах, включая исходники, думаю, следует поступить точно так же, как и в пред. случае, тем более что у вас двумерный с послед. нумерацией строк (не нужно даже выполнять перенумерацию элементов массива).
если id-шники должны быть отражены в ссылках, тут немного сложнее. При работе с БД для этого используются спец. запросы на выбор объектов с соседними несмежными id. Если показанный вами массив находится прямо в исходниках, тут нет никаких проблем: выбираете соседние элементы, используя последовательные индексы, а потом уже смотрите на их id.
В послед случае. есть и более оригинальные способы решения при условии, что у вас из фактических данных только id и header. Можно использовать одномерный!!! массив заголовков, опираясь на тот факт, что в php у элементов массива могут одновременно существовать и числовые и символьные индексы (ключи). id-шники делаете символьными ключами, добавляя к ним какой-нибудь не цифровой префикс (хотя цифру 0 в качестве префикса, кажется, можно использовать), чтобы они не превращались в числовые. Получится, что послед. номера и id-шники с префиксами будут ключами, а заголовки – значениями одномерного массива. (Добавление)
P.S. Также можно отдельно построить массив соответствия послед. номеров и id-шников и использовать его для получения одного из другого.
Я думал упростить задачу и загнал ее в несуществующие рамки. Значения переменных могут быть любые и условия их проверки тоже не только "=", но и "больше-меньше". В этом случае ваш способ уже работать не будет...
Вообще-то пофиг, если говорить о выполнении, либо не выполнении отдельно взятого условия. (Добавление)
Пример:
Да, естественно, если брать в расчет все комбинации из N условий, их будет 2^N, а значит и столько же конечных действий, поэтому кол-во условий нужно контролировать (тут могут быть ограничения по разрядности индекса и т.п.).
Значение каждого простого условия записывайте в отдельный бит некоторого индекса, а потом по этому индексу выполняйте закрепленное за ним действие. Обычно сначала обнуляют индекс, а потом используют неполную форму ветвления, устанавливая соотв. бит, когда условие истинно. Если у вас условие представляет собой проверку значения нек. переменной на 0/1, то само это значение можно конвертировать в значение бита, вовсе не используя ветвление, – просто делаете арифмет. сдвиг соотв. значения и OR к индексу (если не уверены, что в проверяемой переменной могут быть только 0 и 1, можете себя обезопасить, выполняя AND 1 над значением переменной до сдвига).
Добавьте хотя бы капчу, а то столько спама напишут, что замучаетесь разгребать.
И, конечно, все это нужно делать на БД, а не на файлах.
P.S. Вот моя подруга описала один из экспериментов с блогом: gency.ru/g-drive-blog (также она мне сделала ЛК, чтобы я мог добавлять свои статьи без входа в админку).