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

Форум PHP

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

 

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

вид форума:
Линейный форум Структурный форум

тема: Сортировка слов по длине
 
 автор: Dobrynin   (07.04.2009 в 09:52)   письмо автору
 
 

есть массив слов сл. вида

Array
(
    [0] => Array
        (
            [0] => менеджером
            [text] => менеджером
            [1] => 36129
            [morf] => 36129
            [lenght] => 10
        )

    [1] => Array
        (
            [0] => менеджерами
            [text] => менеджерами
            [1] => 36129
            [morf] => 36129
            [lenght] => 11
        )

    [2] => Array
        (
            [0] => менеджера
            [text] => менеджера
            [1] => 36129
            [morf] => 36129
            [lenght] => 9
        )

.............................

    [100] => Array
        (
            [0] => менеджеров
            [text] => менеджеров
            [1] => 36129
            [morf] => 36129
            [lenght] => 10
        )
)


нужно отсортировать этот массив по полю lenght - длина поля text

есть ли какие-либо стандартные средства для решения это проблемы

  Ответить  
 
 автор: Trianon   (07.04.2009 в 09:57)   письмо автору
 
   для: Dobrynin   (07.04.2009 в 09:52)
 

usort()

  Ответить  
 
 автор: Dobrynin   (07.04.2009 в 10:09)   письмо автору
 
   для: Trianon   (07.04.2009 в 09:57)
 

Слишком сложно.
я нашёл решение более простое, кому интересно, то он выглядит сл. образом:


//при добавлении эл-та в массив считаем и его длину, вставляя её в начао подмассива
foreach ($morf_words as $key=>$word) {
    $arr[$key]['text'] = 'то что мы вставляем';
    array_unshift($arr[$key], strlen($arr[$key]['text']));
}
            
arsort($arr);

  Ответить  
 
 автор: Trianon   (07.04.2009 в 10:17)   письмо автору
 
   для: Dobrynin   (07.04.2009 в 10:09)
 

решение долгое (поскольку нужен дополнительный проход по циклу) и дорогое (поскольку используется полная копия массива) . И сложное ( поскольку usort занимает пару строчек).

  Ответить  
 
 автор: Dobrynin   (07.04.2009 в 10:44)   письмо автору
 
   для: Trianon   (07.04.2009 в 10:17)
 

вовсе и не долгое т.к. ты при любом раскладе пробегаешь массив для того что бы заполнить его.
так и заносишь по пути данные о длине строки.

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

  Ответить  
Rambler's Top100
вверх

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