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]
цитата
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));
Новая тема
Ответить
Эта страница в полной версии