|
|
|
| есть массив слов сл. вида
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
есть ли какие-либо стандартные средства для решения это проблемы | |
|
|
|
|
|
|
|
для: Dobrynin
(07.04.2009 в 09:52)
| | usort() | |
|
|
|
|
|
|
|
для: 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);
|
| |
|
|
|
|
|
|
|
для: Dobrynin
(07.04.2009 в 10:09)
| | решение долгое (поскольку нужен дополнительный проход по циклу) и дорогое (поскольку используется полная копия массива) . И сложное ( поскольку usort занимает пару строчек). | |
|
|
|
|
|
|
|
для: Trianon
(07.04.2009 в 10:17)
| | вовсе и не долгое т.к. ты при любом раскладе пробегаешь массив для того что бы заполнить его.
так и заносишь по пути данные о длине строки.
но для более продуктивной беседы напиши правило для сортировки требуемого массива | |
|
|
|