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 :: Почему не выходит из цикла по break

 PHP.SU

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


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

> Без описания
imediasun
Отправлено: 01 Сентября, 2014 - 12:41:48
Post Id


Частый посетитель


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


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

[+][+][+][+][+]


Есть цикл для сортировки мест достопримечательностей по популярности в зависимости от популярности курорта
PHP:
скопировать код в буфер обмена
  1.  
  2. //$z - общее количество мест достопримечательностей в стране
  3. //$resorts_by_cnt - массив содержащий курорты Франции
  4. $pcnt_fin=$this->cycle(0,0,$resorts_by_cnt,$z,0,$pcnt=array());
  5. echo "<pre>";
  6. echo "финальный массив места по стране отсортированные";
  7. var_dump($pcnt_fin);//нет значений массива - null почему???????
  8. echo "</pre>";
  9. }
  10. function cycle($c,$b,$resorts_by_cnt,$z,$n,$pcnt){
  11. $i=count($resorts_by_cnt);
  12. for($a=$c;$a<=$i;$a++){
  13. print('n='.$n);
  14. //когда индекс сравнялся с количеством мест по стране в базе получить массив и выйти из цикла
  15. if($n==$z){
  16. $w=1;
  17. }
  18. if($a==$i){
  19. echo "последний запрос предыдущие не выявили места";
  20. print('Надо вернуться к первому курорту и вывести последуещее место');
  21. $c=0;
  22. $this->cycle($c,$b+1,$resorts_by_cnt,$z,$n,$pcnt);
  23. }
  24.  
  25. $row[$a]=array();
  26. if(isset($resorts_by_cnt[$a])){
  27. print('просматриваем курорт '.$resorts_by_cnt[$a]['name'].' на наличие мест');
  28. $row[$a]=$this->places_by_resort_model->get__obj_order($resorts_by_cnt[$a]['id'],'popularity','desc');
  29. }
  30. if(isset($row[$a][$b]) && count($row[$a][$b])>0 ){
  31. if(isset($pcnt[$n-1]) && ($row[$a][$b]['id']==$pcnt[$n-1]['id'])){
  32. print('Этот курорт и это место уже цикл проходил - пропускаем!');
  33. continue;
  34. }
  35.  
  36. else{
  37. if(isset($row[$a][$b])){
  38. $pcnt[$n]=$row[$a][$b];
  39. echo "<pre>";
  40. echo "курорт ".$resorts_by_cnt[$a]['name']."";
  41. echo "index a ".$a."";
  42. print_r($pcnt[$n]);
  43. echo "</pre>";
  44. $n=$n+1;
  45. }
  46. continue;
  47. }
  48. }
  49. else{
  50. continue;
  51. }
  52. }
  53. if(isset($w) && $w==1){
  54. print_r($pcnt);//массив есть как надо
  55. return $pcnt;//возврата масива нет здесь почему?????????
  56. }
  57. }
  58.  

нет return , подскажите почему у меня уже голова кипит с этой сортировкой

(Отредактировано автором: 01 Сентября, 2014 - 15:04:37)

 
 Top
imediasun
Отправлено: 01 Сентября, 2014 - 15:06:02
Post Id


Частый посетитель


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


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

[+][+][+][+][+]


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

(Отредактировано автором: 01 Сентября, 2014 - 15:13:22)

 
 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