[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Узнать индекс элемента массива
eurobax
Как узнать индекс элемента массива?
Допустим, имеем ссылку на элемент:

$elem = & $array[10];
blink.gif

Как по ссылке $p узнать индекс этого элемента 10?



Спустя 26 секунд (7.09.2010 - 09:57) linker написал(а):
Никак

Спустя 34 минуты, 4 секунды (7.09.2010 - 10:31) Basili4 написал(а):
eurobax
100% не как.

Спустя 1 час, 29 минут, 17 секунд (7.09.2010 - 12:01) SlavaFr написал(а):
а зачем это надо?
не проще ли сразу 10 в $elem написать и потом к результату просто $array[$elem] обращатся?

Спустя 1 час, 3 минуты, 17 секунд (7.09.2010 - 13:04) linker написал(а):
SlavaFr
Тут ссылка на элемент массива, поэтому изменяя $elem, будет меняться $array[10].

Спустя 1 час, 8 минут, 54 секунды (7.09.2010 - 14:13) Nikitian написал(а):

$elem = & $array[10];
$test=time();//Что-нибудь для уникальности
list($test,$elem)=array($elem,$test);
echo'Индекс: '.array_search($elem,$array);
//Возвращаем как было
list($test,$elem)=array($elem,$test);
unset($test);

Спустя 21 минута, 12 секунд (7.09.2010 - 14:34) linker написал(а):
smile.gif Хитро

Спустя 59 минут, 51 секунда (7.09.2010 - 15:34) SlavaFr написал(а):
я не догоняю, для чего это нужно. Хочу живой пример, где бы не возможно было бы передать индекса масива для дольнейшего использования.
Зачем нужно вообще адрес елемента масива, если достаточно иметь его индех?

Спустя 1 час, 7 минут, 43 секунды (7.09.2010 - 16:42) eurobax написал(а):
Спасибо, похоже, array_search самый подходящий вариант. Кстати, работает и просто:
array_search($elem, $array)

где elem - ссылка

Это нужно в базе данных, для определения порядкового номера записи(строки) в таблице. Порядковый номер отображается пользователю.

Есть класс для работы с таблицей (RecordSet) и класс для работы со строкой таблицы (Record).
В класс Record передается ссылка на строку (а как еще? Индекс нельзя - он может сместиться после вставки или удаления записей). И в этом классе нужно реализовать метод, возвращающий текущую строку. Типа, что за порядковый номер записи, которую редактируем?

Пока, что на ум приходило, это вычислить порядковый номер элемента как <индекс элемента> + 1

Поиск элемента, подозреваю, не самый оптимальный вариант, хотелось бы что-то вроде array_index($elem). Но что делать если этот вариант единственный..

Спустя 15 минут, 4 секунды (7.09.2010 - 16:57) Nikitian написал(а):
Цитата
Кстати, работает и просто:

Да, но если этот элемент не уникальный и имеется такой же элемент, с индексом меньше индекса этого элемента, то array_search() найдёт его.

Спустя 9 минут, 59 секунд (7.09.2010 - 17:07) eurobax написал(а):
Да, я заценил. У меня просто записи уникальные, я этим пренебрег.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.