Ручная установка внутреннего указателя на текущий элемент массива

demon_mhm

Новичок
Ручная установка внутреннего указателя на текущий элемент массива

Задача такая: есть ассоциативный массив, необходимо получив по ключу определенный элемент, также получить соседствующие с ним элементы. желательно не проматывая весь массив, т.к. он может быть достаточно объемным.
В ПХП есть функции next() и prev(), которые возвращают следующий и предыдущий элементы относительно внутреннего указателя массива. Есть reset и end, которые могут устанавливать его в начало или конец. Но функции, выставляющей этот указатель по ключу, я не нашел. Как быть?
 

Vallar_ultra

Любитель выпить :)
demon_mhm
написать свою?!
алгоритмы правильного обхода массивов есть в гугле.
 

Гравицапа

elbirret elcno
demon_mhm
А почему у тебя порядок элементов определяется внутренним указателем,а не числовым индексом?
 

demon_mhm

Новичок
Vallar_ultra
А вот обходить-то как раз и не хочется, т.к. массив может быть достаточно большой и необходимый ключ может находиться в конце
Гравицапа
потому что массив ассоциативный и ключами являются id элементов, которые не отсортированы, да и вообще, строго говоря, числовыми индексами являться не обязаны
 

demon_mhm

Новичок
Гравицапа
Я, но я не хочу заменять id на числовые индексы, т.к. считаю это избыточностью. Большие массивы нужно делать по возможности более компактными, поэтому я и вынес id элементов в ключи. Опять таки, поиск и выборку делать гораздо проще.
 

demon_mhm

Новичок
Фанат
А почему вы решили что я выбираю большой массив из БД?
 

Фанат

oncle terrible
Команда форума
потому что это самое логичное предположение.
Но если это не так, то ты можешь рассказать нам, что это за такой большой красивый массив.
 

demon_mhm

Новичок
Фанат Ну, если это важно, то расскажу что массив получается при разборе XML-документа, содержащего описания множества однотипных объектов. Базы нет, все выборки и поиск делаются по массивам.
ЗЫ: надеюсь, это поможет нам найти решение проблемы, а не доказать что ваш собеседник идиот, как это обычно происходит при общении с вами
 

Фанат

oncle terrible
Команда форума
К сожалению, мне самому доказывать никогда не приходится.
собеседники выставляют себя идиотами сами. Вот как ты сейчас.
Вместо того, чтобы заниматься решением своей проблемы, ведешь себя, как партизан на допросе. информацию по твоей проблеме из тебя надо вытягивать клещами, как будто это нам нужно решение, а не тебе. Пугает тебя опять же, не проблема, а то, что тебя назовут идиотом. иногда мне кажется, что самый страшный ужас в мире - это когда тебя называют дураком. во всяком случае половина посетителей этого форума этого так боятся.

Короче.
Первое. Такого оператора в пхп нет.
Второе. Теперь ты, наконец, понял, что использовать ХМЛ вместо базы данных неправильно, а тот, кто тебе это посоветовал - идиот?
Третье. Дарю тебе костыль. Делаешь числовой массив из айдишников записей.
Но не дай бог тебе придется удалить один из элементов.
 

BRat

o_0
Создай второй массив с id'ами и ищи по нему
[m]array_keys[/m]
[m]array_search[/m]
 

demon_mhm

Новичок
Фанат
:) Я не боюсь признать себя дураком. Поэтому и обращаюсь за советами туда, где надеюсь их найти.
По-моему, я изложил достаточно, чтобы решить задачу "академически", а не искать дыры в предпосылках и выяснять где тут дураки порылись.

Короче.
первое. Это я уже раскопал, полез за советом.
второе. Такая уж стоит задача - работать напрямую с XML без базы. Чтобы объяснить почему и как, мне пришлось бы написать кучу текста, которая привела бы только к обсуждению недостатков работы с XML и преимуществ работы с базой. Я же предпочел обратиться с конкретным вопросом к знающим людям.
третье. до этого я и сам додумался, спасибо большое. Просто хотелось знать, может это как-то можно решить штатными средствами ПХП
 

Vallar_ultra

Любитель выпить :)
demon_mhm
Оффтопик: если хочешь что-то решить ШТАТНЫМИ средствами php - то есть замечательный сайт http://www.php.net - а там поиск по документации, в которой описаны все встроенные возможности.....
 

demon_mhm

Новичок
Vallar_ultra
Спасибо, оттуда и пришел :) Просто бывают ситуации, когда ищешь немного не там, ну и соответственно не находишь ничего. А умные люди могут ткнуть носом где искать :)
 
Сверху