Forum Webscript.Ru

Программирование => PHP => Тема начата: Greg от 14 Марта 2006, 09:16:59

Название: параноя с циклами
Отправлено: Greg от 14 Марта 2006, 09:16:59
друзья! вот такая проблема (несколько часов уже голову ломаю) есть цикл (for), который перебирает элементы массива, в нем есть другой цикл (while), который также перебирает элементы уже другого массива:


$index=file(\'$DOCUMENT_ROOT/../fileindex.txt\');
$words=explode(" ",$sstr)
for ($i=0; $i {
$relevance=0;
$title=$index[$i][2];

$found_t_all=stristr($title,$sstr);
if ($found_t_all)
{
$relevance+=1;
$title=str_replace($sstr,"",$title);
}

while ($element=each($words))
{
$found_t_once=stristr($title,$element["value"]);
if ($found_t_once)
{$relevance+=0.5;}
}
}

так вот: внутри цикла while переменная $title представляется не как $index с текущим $i, а как с $i=0, причем на протяжении всего while-перебора... то есть $i обнуляется, но как только вызываю $i за пределами while, она принимает то значение, которое должна...

весь моск уже сломал, ничего понять не могу6 в чем проблема?

всем ответившим заранее спасибо!
Название: параноя с циклами
Отправлено: Greg от 14 Марта 2006, 11:15:51
в принципе, решение найдено, но на мой взгляд кривое:
строка$words=explode(" ",$sstr) просто перенесена внутрь цикла, тогда все работает... но это же реальный геморой для сервера!

может кто нибудь подскажет более дельного?
Название: в общем, оказывается, я совсем пень!
Отправлено: Greg от 14 Марта 2006, 15:43:20
что-то сразу не доходило. что после each указатель останавливается на последнем элементе массива, нужно было лишь применить
reset($words);
тему можно закрывать :beer: