Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сортировка массива, Сортировка массива по русскому алфавиту 
:(
    Опции темы
Timophey
Дата 26.5.2008, 23:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 16.10.2007
Где: Россия

Репутация: нет
Всего: нет



Решил сделать один из разделов сайта динамическим, но вот бедаименя стали располагаться не в том порядке
Код

        $dir = opendir (".");  # пробегаемся по каталогу,
        while ( $file = readdir ($dir))
        {
          if (( $file != ".") && ($file != "..") && ($file != "Aktery.php") && ($file != "Aktery~.php") && ($file != "img.php"))
          {
          $katalog[]="$file";
          }
        }
      closedir ($dir);
      for ($i=0; $i < count($katalog); $i++) # пошли по списку
      {
      #  echo "$katalog[$i] <br>"; #имя каталога
        $dirk = opendir ("$katalog[$i]");
        while ( $file = readdir($dirk))
        {
          if (( $file != ".") && ($file != "..")/* && (ereg("\.jpg$", $file))*/)
          {
          $files[]="$file";
      #    print "<a href=\"$katalog[$i]/$file\">$file </a><br>";
          }
        }
        for ($x=0; $x < count ($files); $x++) if(ereg("\.htm$", $files[$x]))
        {
     #   include "$katalog[$i]/$files[$x]";
        $file_array  = file("$katalog[$i]/$files[$x]"); #создаём массив из этого  файла
        echo "
            <tr>
            <td width=\"25%\" align=\"left\">
            <img src=\"$katalog[$i]/$file_array[1]\">
            </td><td width=\"25%\" class=\"people\">
            <a href=\"?p=$katalog[$i]\">$file_array[0]</a>
            </td>
            </tr>
            ";
        }
        closedir($dirk);
      }

1)открываем каталог, и создаём массив из его содержимого, отбрасываем лишнее и остаётся только список папок данного каталога
2)в каждой папке из списка находим *.htm файл с описанием, первую строку из которого ставим ссылкой (заголовком), а вторая указывает, на файл фотографии (раздел "Актёры" на сайте театра)
суть - что первый массив дан как есть, с сортировкой по английскому алфавиту, все каталоги имеют имена в транслите, ибо некоторые фонкции, используемые ниже, русского шрифта не понимают
цель - сортировать либо по русскому алфавиту вытаскивая русские имена из $file_array[0],
 либо сортировать от A до Ja в транслите;
нединамический пример того, что должно получиться в итоге на недоделанном http://rilancio.net/peoples.php

Это сообщение отредактировал(а) Timophey - 26.5.2008, 23:53
PM MAIL WWW ICQ Skype   Вверх
A1ekcandr
Дата 27.5.2008, 10:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 99
Регистрация: 27.6.2007

Репутация: 1
Всего: 1



asort ($array); 

в данном случае

Код

        $dir = opendir (".");  # пробегаемся по каталогу,
        while ( $file = readdir ($dir))
        {
          if (( $file != ".") && ($file != "..") && ($file != "Aktery.php") && ($file != "Aktery~.php") && ($file != "img.php"))
          {
          $katalog[]="$file";
          }
        }
      closedir ($dir);
 asort($katalog);


Это сообщение отредактировал(а) A1ekcandr - 27.5.2008, 10:12
PM MAIL   Вверх
Timophey
Дата 28.5.2008, 22:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 16.10.2007
Где: Россия

Репутация: нет
Всего: нет



здесь идёт сортировка по
a b c d e f g h i j k l m n o p q r s t u v w x y z
а мне надо чтоб по
a b v g d e zh z i k l m n o p r s t u f h c ch sh sw y yu ya
и без сохранения индексов
такое вообще возможно?
если да, то готов весь код переписать, лишь бы работало...
PM MAIL WWW ICQ Skype   Вверх
Feldmarschall
Дата 28.5.2008, 22:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 22
Всего: 32



хех. интересная сортировка.
в пхп есть функция usort()
она может отсортировать что угодно.
для неё удобно будет сделать массив твоих букв, а потом сделать ему array-filp()


PM   Вверх
Fortop
Дата 28.5.2008, 22:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 20
Всего: 42



Timophey, 
в крайнем случае воспользуйся 

usort()


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
Timophey
Дата 16.6.2008, 18:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 16.10.2007
Где: Россия

Репутация: нет
Всего: нет



Друзья, спасибо всем, кто пыхтел над решением этого вопроса!
Немного поворошив память, я вспомнил, что в Ангине (Angine - мой первый и последний движок сайта) активно используется функция прямого и обратного транслита, чуток подлатал их под себя и вот, что получилось:
Код

function tr_to_win($str)
 {
$str=strtr($str,array("__"=>" ","a"=>"à","b"=>"á","v"=>"â","g"=>"ã","d"=>"ä","e"=>"å","zh"=>"æ","z"=>"ç","i"=>"è","j"=>"é","k"=>"ê","l"=>"ë","m"=>"ì","n"=>"í","o"=>"î","p"=>"ï","r"=>"ð","s"=>"ñ","t"=>"ò","u"=>"ó","f"=>"ô","h"=>"õ","c"=>"ö","ch"=>"÷","sh"=>"ø","sw"=>"ù","q"=>"ú","x"=>"êñ","'"=>"ü","yu"=>"þ","ya"=>"ÿ",
  "A"=>"À","B"=>"Á","V"=>"Â","G"=>"Ã","D"=>"Ä","E"=>"Å","Zh"=>"Æ","Z"=>"Ç","I"=>"È","J"=>"É","K"=>"Ê","L"=>"Ë","M"=>"Ì","N"=>"Í","O"=>"Î","P"=>"Ï","R"=>"Ð","S"=>"Ñ","T"=>"Ò","U"=>"Ó","F"=>"Ô","H"=>"Õ","C"=>"Ö","Ch"=>"×","Sh"=>"Ø","Sw"=>"Ù","Q"=>"Ú","X"=>"Êñ","'"=>"Ü","Yu"=>"Þ","Ya"=>"ß"));
   return $str;
 }
function win_to_tr($str)
 {
  $str=strtr($str,array(" "=>"__","à"=>"a","á"=>"b","â"=>"v","ã"=>"g","ä"=>"d","å"=>"e","æ"=>"zh","ç"=>"z","è"=>"i","é"=>"j","ê"=>"k","êñ"=>"x","ë"=>"l","ì"=>"m","í"=>"n","î"=>"o","ï"=>"p","ð"=>"r","ñ"=>"s","ò"=>"t","ó"=>"u","ô"=>"f","õ"=>"h","ö"=>"c","÷"=>"ch","ø"=>"sh","ù"=>"sw","ü"=>"'","þ"=>"yu","ÿ"=>"ya",
  "À"=>"A","Á"=>"B","Â"=>"V","Ã"=>"G","Ä"=>"D","Å"=>"E","Æ"=>"Zh","Ç"=>"Z","È"=>"I","É"=>"J","Ê"=>"K","Ë"=>"L","Ì"=>"M","Í"=>"N","Î"=>"O","Ï"=>"P","Ð"=>"R","Ñ"=>"S","Ò"=>"T","Ó"=>"U","Ô"=>"F","Õ"=>"H","Ö"=>"C","×"=>"Ch","Ø"=>"Sh","Ù"=>"Sw","Ü"=>"'","Þ"=>"Yu","ß"=>"Ya"));
   return $str;
 }
        $dir = opendir (".");
        while ( $file = readdir ($dir))
        {
          if (( $file != ".") && ($file != "..") && (!ereg("\.txt$|\.php$", $file)))
          {
          $katalog[]="$file";
          }
        }
      closedir ($dir);
for ($i=0; $i < count($katalog); $i++) {$katalog[$i]=tr_to_win($katalog[$i]); }
sort($katalog);
echo "<br>";
for ($i=0; $i < count($katalog); $i++) {$katalog[$i]=win_to_tr($katalog[$i]); }

http://rilancio.net/Aktery/Aktery.php

Это сообщение отредактировал(а) Timophey - 16.6.2008, 18:34
PM MAIL WWW ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0445 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.