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]   

> Описание: Неверная сортировка массива...
DeepVarvar Супермодератор
Отправлено: 02 Октября, 2009 - 11:42:29
Post Id



Активный участник


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


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




Ситуация следующая:
в папке "data" лежат файлы
3.jpg, 4.jpg, 5.jpg, 6.jpg, 7.jpg, 8.jpg, 9.jpg, a.jpg, b.jpg, c.jpg, d.jpg, e.jpg, f.jpg, g.jpg...

тестовый скрипт
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. //этот проход использует регулярку чтобы не индексировать "." и ".."
  3. //и считывать только *.jpg файлы...
  4. $found=0;
  5. if ($dir=opendir('data/')) {
  6.         while (false!==($fname=readdir($dir))) {
  7.                 if (eregi("[a-zA-Z0-p_-]*.jpg",$fname)) {
  8.                         $data[$found]=$fname;
  9.                         $found=$found+1;
  10.                         }
  11.                 }
  12.         }
  13.  
  14.  
  15. //а этот проход индексирует ВСЁ
  16. $allfound=0;
  17. if ($newdir=opendir('data/')) {
  18.         while (false!==($newfname=readdir($newdir))) {
  19.                 $alldata[$allfound]=$newfname;
  20.                 $allfound=$allfound+1;
  21.                 }
  22.         }
  23.  
  24. print '<br>ПРИНУДИТЕЛЬНО выводим значение до использования each(): $data[2] ==> '.$data[2];
  25. print '<br>ПРИНУДИТЕЛЬНО выводим значение до использования each(): $alldata[2] ==> '.$alldata[2];
  26.  
  27.  
  28. print '<center>';
  29.  
  30. print '<br><br>Расшарим только нужные:';
  31. print '<div style="width:400px; border:solid 1px #ff0000;">';
  32. reset($data);//отправили курсор в начало массива
  33. while(list($key)=each($data)) {print '<br>значение $dada['.$key.'] ==> '.$data[$key];}
  34. print '</div>';
  35.  
  36. print '<br><br>Расшарим ВСЁ:';
  37. print '<div style="width:400px; border:solid 1px #ff0000;">';
  38. reset($alldata);//отправили курсор в начало массива
  39. while(list($newkey)=each($alldata)) {print '<br>значение $alldada['.$newkey.'] ==> '.$alldata[$newkey];}
  40. print '</div>';
  41.  
  42. print '</center>';
  43. ?>

Так вот на localhost'e все работает отлично, а у хостера файлы "индексируются" в непонятном порядке, однако при обновлении страницы "беспорядок" не изменяется.
Этот "беспорядок" никак не связан ни с именами файлов ни с датой/временем их загрузки по ftp.....
Хостер тоже ломает голову...
Ктонибудь встречался с такой проблемой?
(Добавление)
Прошу прощения за обилие комментариев в тестовом скрипте... Это для админа хоста))))))))))))
 
 Top
EuGen Администратор
Отправлено: 02 Октября, 2009 - 13:00:56
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


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




Цитата:

string readdir ( resource dir_handle )

Возвращает имя следующего по порядку элемента каталога. Имена элементов возвращаются в порядке, зависящем от файловой системы.

Если Вы об этом


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
DeepVarvar Супермодератор
Отправлено: 02 Октября, 2009 - 13:11:44
Post Id



Активный участник


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


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




Да я об этом...

И как же с этим бороться? Принудительно отсортировывать ключи зависимо от имен?
Или все же это проблема хостера?
(Добавление)
Кстати о разнице файловых систем..
Однако фтп-клиент выводит файлы расположенные на хосте в алфавитном порядке....
(Добавление)
Друзья, подскажите же мне:
Чья это проблема? Хостера или моя?
Мне не в лом написать функцию нужной мне сортировки массива.
Однако если это не от меня зависит, то почему исправлять "багу" должен я?
 
 Top
Champion Супермодератор
Отправлено: 02 Октября, 2009 - 14:43:19
Post Id



Активный участник


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


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




Фтп клиент сортирует так, как ты ему скажешь. А тебе сложно отсортировать массив?
 
 Top
DeepVarvar Супермодератор
Отправлено: 02 Октября, 2009 - 15:14:38
Post Id



Активный участник


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


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




Я ж говорю что не сложно... Я хотел бы понять кто виноват в этом...
На хосте стоит линукс у меня винда... ОБЯЗАН ли я при написании "мозга" сайта учитывать несоответствие файловых систем, или это проблемы хостера соответствовать СТАНДАРТАМ восприятия команд (заведемо известных по свойствам) для РНР-интерпретатора?

Так же я не думаю что в коде фтп-клиента отписана функция для отображения списка файлов в желаемом порядке (это ИМХО нецелесообразно, да и таких вариантов в его настройках нет).....

(Отредактировано автором: 02 Октября, 2009 - 15:21:05)

 
 Top
Champion Супермодератор
Отправлено: 02 Октября, 2009 - 15:20:34
Post Id



Активный участник


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


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




Никто не виноват. Точнее, виноват ты. Если ты знаешь, что тебе нужен сортированный массив, то сортируй. Что за стандарты восприятия команд? Где они написаны?
EuGen пишет:
Имена элементов возвращаются в порядке, зависящем от файловой системы.
 
 Top
DeepVarvar Супермодератор
Отправлено: 02 Октября, 2009 - 15:22:48
Post Id



Активный участник


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


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




Иногда бывает очень жаль что не все стандартизировано...
Надо поставить на заметку и ЭТОТ момент... На ошибках учатся...
(Добавление)
Дописал сортировку - работает...
Не обидно что МИР столь многогранен...
Обидно стало что программно-синтаксический мир "точностей" так же многогранен...
::blink.gif::
 
 Top
DeepVarvar Супермодератор
Отправлено: 02 Октября, 2009 - 20:26:15
Post Id



Активный участник


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


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




Вдруг кому надо, решение проблемы в одной строчке:

array_multisort($alldata,SORT_ASC,SORT_STRING);

ахахахаха)))))))))))))))))))))))))))))))))))))))))))))))))))))))))
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB