Master-X
Форум | Новости | Статьи
Главная » Форум » Программинг, Скрипты, Софт, Сервисы » 
Тема: PHP: Позиция указателя в массиве
цитата
26/11/07 в 10:32
 clever
Какой функцией устанавливается указатель в массиве в определенную позицию? Я такой функции в своем бумажном справочнике не нашел.
цитата
26/11/07 в 10:40
 Gary
потому что её нет. объясни подробнее что ты хочешь сделать
цитата
26/11/07 в 12:48
 SAV
может ассоциативный массив подойдет?
цитата
26/11/07 в 12:54
 HardKenny
reset($array) - в начало массива
end($array) - указатель в конец массива
next($array) - вперед на 1 позицию
prev($array) - назад

Не эти ли случайно?
Или я не понял вопроса...
цитата
26/11/07 в 13:26
 SAV

это не дает определенной позиции
цитата
26/11/07 в 13:38
 Formator
Функций таких нет. foreach перебирать до нужной позиции, а потом делать break.

Такое обычно не нужно. Если столкнулся, значит есть другой вариант решения проблемы.
цитата
26/11/07 в 14:05
 Stek
только прыгнуть на нулевую позицию и потом перебором на нужную.

Это только по резальту из базы данных можно по нужным позициям прыгать.
цитата
03/12/07 в 11:24
 zavul0n
$position = 10; // первый элемент - 0, второй - 1, ...

reset($a);
for ($i=0; $i<$position; $i++) next($a);


или $a[$position] icon_smile.gif
цитата
03/12/07 в 14:56
 Sha
Я так понял стартер как раз хочет избежать "похода из начала" в нужную позицию, но чтобы потом продолжить пользоваться удобными функциями типа each().
цитата
04/12/07 в 06:27
 Sirgey
Ну вообще это сделать можно, но не со стандартными массивами.

Нужно просто написать класс - хранилище, с методами нужным, с передвижением маркера на любую позицию, и с функцией создания себя из массива.

Если ТС это интересует - стукнись, объясню как сделать и пример сюда запосчу.
цитата
04/12/07 в 20:14
 zavul0n
Sha писал:
Я так понял стартер как раз хочет избежать "похода из начала" в нужную позицию, но чтобы потом продолжить пользоваться удобными функциями типа each().


малой кровью (без введения новых структур данных) можно сделать

$array2 = array_slice($array1, $position);

и потом делать всякие each.

Ограничения - больше памяти; нельзя просмотреть предыдущие элементы.

Обход первого ограничения. Если есть понимание, сколько именно элементов нужно, то надо добавить третий параметр
$array2 = array_slice($array1, $position, $limit);

Обход второго ограничиния (не совсем, но всё же):
$array2 = array_merge(array_slice($array1, $position), array_slice($array1, 0, $position));


Эта страница в полной версии