Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Выбрать соседние элементы в ассоциативном массиве


Автор: AXS 15.7.2010, 06:30
Есть массив:
Код

  $arr = array("one"=>"red", "two"=>"green", "three"=>"blue", "bla"=>"blabla", "fig"=>"znaet");


Допустим в скрипт передан параметр ?id=two
Нужно вывести:

Код

  echo $arr[$_GET['id']];


...и ещё предыдущий от two, и следующий.

Как их вычислить не прибегая к перебору?

PS: Кроме того если указаный элемент является первым или последним надо сообщить об этом.

Автор: skyboy 15.7.2010, 09:25
Цитата(AXS @  15.7.2010,  05:30 Найти цитируемый пост)
Как их вычислить не прибегая к перебору?

вариант 0.
шаг 0. выбрать массив ключей. array_keys.
шаг 1. найти позицию переданного параметра в массиве ключей. array_search. 
шаг 2. выбрать из массива ключей следующий и предыдущий ключ.
шаг 3. из исходного массива выбрать значения по имеющимся ключам.
вариант 1.
переработать структуру данных, чтоб не пришлось заниматься подобным поиском.

Автор: ksnk 15.7.2010, 09:49
Код

$arr = array("one"=>"red", "two"=>"green", "three"=>"blue", "bla"=>"blabla", "fig"=>"znaet");

$bla='bla';
printf ('total %s values, "%s" is %s -th',count($arr),$bla, array_search ($bla,array_keys($arr)));

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)