Автор Тема: параноя с циклами  (Прочитано 2169 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Greg

  • пинёг
  • Ветеран
  • *****
  • Сообщений: 618
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.bsfera.ru
параноя с циклами
« : 14 Марта 2006, 09:16:59 »
друзья! вот такая проблема (несколько часов уже голову ломаю) есть цикл (for), который перебирает элементы массива, в нем есть другой цикл (while), который также перебирает элементы уже другого массива:


$index
=file(\'$DOCUMENT_ROOT/../fileindex.txt\');
$words=explode(" ",$sstr)
for ($i=0; $i<count($index);$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

  • пинёг
  • Ветеран
  • *****
  • Сообщений: 618
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.bsfera.ru
параноя с циклами
« Ответ #1 : 14 Марта 2006, 11:15:51 »
в принципе, решение найдено, но на мой взгляд кривое:
строка$words=explode(" ",$sstr) просто перенесена внутрь цикла, тогда все работает... но это же реальный геморой для сервера!

может кто нибудь подскажет более дельного?
Пространные размышления об ИТ и все что вокруг

Оффлайн Greg

  • пинёг
  • Ветеран
  • *****
  • Сообщений: 618
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.bsfera.ru
в общем, оказывается, я совсем пень!
« Ответ #2 : 14 Марта 2006, 15:43:20 »
что-то сразу не доходило. что после each указатель останавливается на последнем элементе массива, нужно было лишь применить
reset($words);
тему можно закрывать :beer:
Пространные размышления об ИТ и все что вокруг

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28