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
Форумы портала PHP.SU :: Версия для печати :: список по алфавиту
Форумы портала PHP.SU » » Вопросы новичков » список по алфавиту

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

1. kuller - 29 Мая, 2016 - 21:56:23 - перейти к сообщению
делаю списки по алфавиту в котором должны отображаться города. Есть следующий код

PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3.  
  4. $SqlCity = $db->query("SELECT * FROM ".PREFIX."_city ORDER BY name");
  5. $result = $db->super_query("SELECT COUNT(*) as count FROM ".PREFIX."_city");
  6.  
  7. if($result['count'] > 0)
  8. {
  9.         $alphabet = array('А','Б','В','Г','Д','Е','Ё','Ж','З','И','К','Л','М','Н','О','П','Р','С','Т','У','Ф','Х','Ц','Ч','Ш','Щ','ъ','Ы','Ь','Э','Ю','Я');
  10.        
  11.         foreach($alphabet as $val)
  12.         {
  13.                 for($i = 0; $i < $result['count']; $i++)
  14.                 {
  15.                         $cityRow = $db->get_row($SqlCity);
  16.                         $count = $i + 1; //выставляем счетчик, который будет показывать нам в какой из 5-х столбцов выводить информацию
  17.                        
  18.                         $t = mb_substr($cityRow['name'], 0,1, 'UTF-8');
  19.                        
  20.                         if($count % 5 == 1 AND $val == $t)
  21.                         {
  22.                                 $a .= '<ul class="letter_list"><li>'.$cityRow['name'].'</li></ul>';
  23.                         }
  24.                        
  25.                         else if($count % 5 == 2 AND $val == $t)
  26.                         {
  27.                                 $a .= '<ul class="letter_list"><li>'.$cityRow['name'].'</li></ul>';
  28.                         }
  29.                        
  30.                         else if($count % 5 == 3 AND $val == $t)
  31.                         {
  32.                                 $a .= '<ul class="letter_list"><li>'.$cityRow['name'].'</li></ul>';
  33.                         }
  34.                        
  35.                         else if($count % 5 == 4 AND $val == $t)
  36.                         {
  37.                                 $a .= '<ul class="letter_list"><li>'.$cityRow['name'].'</li></ul>';
  38.                         }
  39.                        
  40.                         else if($count % 5 == 0 AND $val == $t)
  41.                         {
  42.                                 $a .= '<ul class="letter_list"><li>'.$cityRow['name'].'</li></ul>';
  43.                         }
  44.                 }
  45.                
  46.                 if($val == 'А')
  47.                 {
  48.                         echo '<ul class="ul_group"><li class="li_subgroup"><span class="letter">'.$val.'</span>'.$a.'</li></ul>';
  49.                 }
  50.                
  51.                 if($val == 'Б')
  52.                 {
  53.                         echo '<ul class="ul_group"><li class="li_subgroup"><span class="letter">'.$val.'</span>'.$a.'</li></ul>';
  54.                 }
  55.         }
  56. }
  57.  
  58. ?>
  59.  


в результате отображается два столбца "А" и "Б" а вот содержимое их с одинаковыми городами. Почему так получается не могу понять... помогите пожалуйста...
Если не понятно что в результате должно быть, прикрепляю скрин, того что надо получить.
2. Viper - 29 Мая, 2016 - 23:45:39 - перейти к сообщению
для примера
PHP:
скопировать код в буфер обмена
  1. $array1 = array(
  2.         'А',
  3.         'Б',
  4. );
  5. $array2 = array(
  6.         'А1',
  7.         'А2',
  8.         'А3',
  9.         'А4',
  10.         'А5',
  11.         'Б1',
  12.         'Б2',
  13.         'Б3',
  14.         'Б4',
  15.         'Б5',
  16. );
  17.  
  18. foreach ($array1 as $letter) {
  19.         echo $letter.'<br/>';
  20.  
  21.         foreach ($array2 as $city) {
  22.                 if (mb_substr($city, 0, 1) == $letter) {
  23.                         echo $city.'<br/>';
  24.                 }
  25.         }
  26. }
3. kuller - 30 Мая, 2016 - 00:08:36 - перейти к сообщению
для чего массив $array2 ? типа города что ли? если да, тогда данный пример просто алфавит выводит, а города нет....

Все понял!!! у меня сайт в кодировке utf-8, вот и не показывало города ))) Все работает!!! Спасибо!!!

 

Powered by ExBB FM 1.0 RC1