Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Парсинг и вывод статей с башорга

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
kakawkin
Отправлено: 15 Сентября, 2012 - 10:11:54
Post Id


Новичок


Покинул форум
Сообщений всего: 13
Дата рег-ции: Сент. 2012  


Помог: 0 раз(а)




Собственно приведу с начало свой наработанный код, а потом в чем именно проблемка:
PHP:
скопировать код в буфер обмена
  1.  
  2. //Узнает последний номер цитаты, к примеру 15 ($last_citata=15)
  3.  $last_citata = $out[1][0];
  4.  
  5. //Последняя загруженаня статья - к примеру 10 ($citata=10)
  6. //Цикл для вывода не имеющихся цитат
  7. for ($i=0; $i< count($out[0]); $i++) {
  8.  $str = $out[1][$i];
  9.  if ($str == $citata) { break; }
  10.  
  11.  preg_match_all(, $text, $result);
  12.  echo "#AA-". $str ."\r\n";
  13.  echo $result[1][0] ."<br>". $i ."<br>";
  14.  

Теперь в чем трабла - код работает хорошо. Но у него перебор будет идти вот так:
1) 15 - т.к. в $citata -значение 10, значит этой статьи нету и на вывод её
2) 14 - т.к. в $citata -значение 10, значит этой статьи нету и на вывод её
3) 13 - т.к. в $citata -значение 10, значит этой статьи нету и на вывод её
4) 12 - т.к. в $citata -значение 10, значит этой статьи нету и на вывод её
5) 11 - т.к. в $citata -значение 10, значит этой статьи нету и на вывод её
6) 10 - т.к. в $citata -значение 10, значит такая статья уже имеется и применяется if ($str == $citata) { break; }

А нельзя организовать так что бы цикл перебирал начиная от $citata до $last_citata
 
 Top
KingStar
Отправлено: 15 Сентября, 2012 - 11:36:41
Post Id



Участник


Покинул форум
Сообщений всего: 1889
Дата рег-ции: Авг. 2011  
Откуда: Беларусь


Помог: 69 раз(а)




1. count($out[0]) научись выносить из цикла, иначе он у тебя каждую итерацию будет пересчитывать
2. что бы цикл перебирал начиная от $citata до $last_citata

PHP:
скопировать код в буфер обмена
  1. $citata = 10;
  2. $last_citata = $out[1][0];
  3.  
  4. for ($i=$citata; $i< $last_citata; $i++)


-----
То что программа работает, не означает что она написана правильно!
 
 Top
kakawkin
Отправлено: 15 Сентября, 2012 - 13:50:57
Post Id


Новичок


Покинул форум
Сообщений всего: 13
Дата рег-ции: Сент. 2012  


Помог: 0 раз(а)




Не правильно ты понял.
PHP:
скопировать код в буфер обмена
  1. //Узнает последний номер цитаты, к примеру 15 ($last_citata=15)
  2. $last_citata = $out[1][0];
  3.  
  4. //Последняя загруженаня статья - к примеру 10 ($citata=10)
  5. //Цикл для вывода не имеющихся цитат
  6. for ($i=0; $i< count($out[0]); $i++) {
  7. $str = $out[1][$i];
  8. if ($str == $citata) { break; }
  9.  
  10. preg_match_all(, $text, $result);
  11. echo "#AA-". $str ."\r\n";
  12. echo $result[1][0] ."<br>". $i ."<br>"

Объясняю.
1. $last_citata = $out[1][0]; (2-ая строка )
Массив $out[1][0]- самая последняя цитата. К примеру номера у цитат от 1 до 15
$out[1][0] - 15
$out[1][1] - 14
$out[1][2] - 13
$out[1][3] - 12
$out[1][4] - 11
$out[1][5] - 10
$out[1][13] - 3
$out[1][14] - 2
$out[1][15] - 1
Т.е. мне надо что бы сначало 10, потом 11, потмо 12.

Т.е. цифры пойдут на возрастание, но индекс у массива пойдет на убывание.
А вот такой цикл подойдет ?
for ($i=5; $i< 0; $--i) ???

(Отредактировано автором: 15 Сентября, 2012 - 13:52:23)

 
 Top
re_nat
Отправлено: 15 Сентября, 2012 - 16:26:22
Post Id



Частый гость


Покинул форум
Сообщений всего: 198
Дата рег-ции: Март 2012  


Помог: 5 раз(а)




kakawkin пишет:
Т.е. цифры пойдут на возрастание, но индекс у массива пойдет на убывание.

rsort() ?
 
 Top
kakawkin
Отправлено: 15 Сентября, 2012 - 18:55:31
Post Id


Новичок


Покинул форум
Сообщений всего: 13
Дата рег-ции: Сент. 2012  


Помог: 0 раз(а)




rsort как раз и выстраивает в порядко от большего к меньшему. А мне надо наоборот - от меньшего к большему.
PHP:
скопировать код в буфер обмена
  1.  
  2. $a = array("1","2","3","4","5");
  3.  $b = array();
  4.  $j = count($a);
  5.  for ($i=0; $i< count($a); $i++) {
  6.  $j--;
  7.   $a[$i] = b[$j];  
  8.  }
  9.  

проверить пока не могу но думаю код будет работать
 
 Top
KingStar
Отправлено: 15 Сентября, 2012 - 20:10:02
Post Id



Участник


Покинул форум
Сообщений всего: 1889
Дата рег-ции: Авг. 2011  
Откуда: Беларусь


Помог: 69 раз(а)




sort / rsort / krsort / arsort

(Отредактировано автором: 15 Сентября, 2012 - 20:14:40)



-----
То что программа работает, не означает что она написана правильно!
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB