Установить внутренний указатель массива на произвольный элемент.

warobushek

Новичок
Можно как нибудь сделать следующее
PHP:
$arr = array('yahoo' => 'foo', 'yandex' => 'foo', 'google'=>'bar');

Сделать_текущим($arr['yandex']);

$val = prev($arr);

Сделать_текущим($arr['yandex']);

$val = next($arr);
? Если да, то не подскажете как?
 

zerkms

TDD infected
Команда форума
Никак. А зачем это вообще может быть нужно?
 

DYPA

Настоящая dypa (c)
array_search + скопировать массив сделав первым элементом в нём текущее значение, а в конец дописать значения до этого элемента
ps пахнет говнокодом ;)
 

tf

крылья рулят
А зачем это вообще может быть нужно
ага присоединяюсь, очень интересно, мб существуют другие методы решения?
а так мне кажется while очень сильно поможет, если там у тебя не дофигища данных
 

warobushek

Новичок
есть верная телепрограмма из одного источника без описаний
есть не совсем верная из другого обе у меня лежат в базе. Нужно для верной программы взять описания из той что не совсем верна.

Мои действия

1. читаю из базы программу из первого источника
в массив с элементами: $_casts1[время_передачи] = array('название', ..)

2. читаю из базы программу из второго источника
в массив с элементами: $_casts2[время_передачи] = array('название', ..)

3. для каждой передачи $_casts1 ищу соответствующую ей (по названию) в массиве $_casts2 с учетом возможного расхождения +-2 часа (или любого другого)
копирую описание

Мда.. пока описывал, еще раз понял что это действительно говнокод получается ...
Как думаете, может это стоит вообще реализовать в виде процедуры mysql?
 

shelestov

я тут часто
Время передачи+программа делаем индексом и перевязываем left join-ом.
 

warobushek

Новичок
Время передачи+программа делаем индексом и перевязываем left join-ом.
не понял, что Вы имеете ввиду . Индекс и так по этим полям.
Вобщем сделал вариант с кучей выборок mysql (для каждой передачи по одной). Потом сравнение названий и копирование данных.
Потом заливка одним запросом. В итоге работает 11 секунд для 5000 записей на локальном компе. (в них входит грязная работа на рапарсивание)
 
Сверху