Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Сортировка двумерного массива

Сообщения:  [1-10]   [11-11] 

 
 автор: Trianon   (12.08.2007 в 12:11)   письмо автору
 
   для: Валерий   (12.08.2007 в 09:08)
 

и потерять детерминированное поведение.

   
 
 автор: Валерий   (12.08.2007 в 09:08)   письмо автору
 
   для: zxcAq   (12.08.2007 в 01:25)
 

вместо strcmp в функции использовать strnatcmp

   
 
 автор: zxcAq   (12.08.2007 в 01:25)   письмо автору
 
   для: Trianon   (12.08.2007 в 01:07)
 

>записывать номера в выровненной сетке. 0035
В смысле? Давать названия типа 0001? 0002? 0003...? А скриптом никак нельзя сделать натуральную сортировку?

   
 
 автор: Trianon   (12.08.2007 в 01:07)   письмо автору
 
   для: zxcAq   (12.08.2007 в 00:31)
 

записывать номера в выровненной сетке. 0035

   
 
 автор: zxcAq   (12.08.2007 в 00:31)   письмо автору
 
   для: Trianon   (11.08.2007 в 11:11)
 

Спасибо, Trianon. Как всегда на высоте) Тока вот такая штука, если названия состоят из номеров, то он сравнивает по первой цифре) т.е "2" будет перед "10". Как это исправить?

   
 
 автор: Shiva   (11.08.2007 в 17:03)   письмо автору
 
   для: Trianon   (11.08.2007 в 11:11)
 

Красиво.
А я, признаться, о функции usort и не знал. Мое почтение.

   
 
 автор: Trianon   (11.08.2007 в 11:11)   письмо автору
 
   для: zxcAq   (11.08.2007 в 00:19)
 

Именно с Вашим вариантом и нужно делать.
пользовательская функция порядка для первого случая будет примерно такой:
<?php
function dir_name_order($a$b)
{
   
$e $a['ext'];  $ad $e == 'folder'$an $a['name'];
   
$e $b['ext'];  $bd $e == 'folder'$bn $b['name'];
   
$dd $bd $ad;

   return 
$dd $dd 
              
strcmp($an$bn) ;
}


usort($group'dir_name_order'); //  применение

?>

функция порядка для второго случая зависит от того, записано ли время в сравнимом формате (timestamp или восточный строковый выравненный формат)
Для таймштампа она может выглядеть так:
<?php
function dir_time_name_order($a$b)
{
   
$e $a['ext'];  $ad $e =='folder'$an $a['name']; $at $a['time'];
   
$e $b['ext'];  $bd $e =='folder'$bn $b['name']; $bt $b['time'];
   
$dd $bd $ad;   $dt $bt $at;

   return    
$dd $dd 
          
: ($dt $dt 
                 
strcmp($an$bn));
}


usort($group'dir_time_name_order'); //  применение

?>



PS. Кодер в данной ситуации не поможет. Поможет только программист.

   
 
 автор: zxcAq   (11.08.2007 в 01:58)   письмо автору
 
   для: zxcAq   (10.08.2007 в 02:19)
 

Ну где же все кодеры...

   
 
 автор: zxcAq   (11.08.2007 в 00:19)   письмо автору
 
   для: Shiva   (10.08.2007 в 07:34)
 

Хм... А с тем массивом что вверху, ничё нельзя сделать? :(

   
 
 автор: Shiva   (10.08.2007 в 07:34)   письмо автору
 
   для: zxcAq   (10.08.2007 в 02:19)
 

Переведите массив в вид

$group = array(
        [folders] => array(
                'Folder_Name_1' => array(
                        'realname' => '...',
                        'time'          => '...'),
                'Folder_Name_2' => array(
                        'realname' => '...',
                        'time'          => '...'))
,        [files] => array(
                'File_Name_1'      => array(
                        'realname' => '...',
                        'time'          => '...'),
                'File_Name_2'      => array(
                        'realname' => '...',
                        'time'          => '...')));

   

Сообщения:  [1-10]   [11-11] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования