Я реализовал этот механизм через функцию, но сдается мне, что можно как-то оптимизировать мой несовершенный код (я только учусь).
Буду благодарен за помощь.
А вот, что у меня получилось:
$str = 'Проект, задуманный как «дом для отдыха в естественной обстановке», представляет небольшой двухэтажный прямоугольник (5,85х7 м)
со скатной кровлей, позволяющий в полной мере насладиться окружающим
видом на горы. В общем-то простой и небольшой дом получился довольно
гармоничным, заметным и современным.';
$musor = array('"',',','.','(',')','«','»');
$str = str_replace($musor, "", $str);
$words = explode(" ", $str);
// Функция сортировки элементов массива по длине элементов
function mysort($a, $
{
if(mb_strlen($a, 'utf-8') < mb_strlen($b, 'utf-8')) return -1;
if(mb_strlen($a, 'utf-8') == mb_strlen($b, 'utf-8')) return 0;
if(mb_strlen($a, 'utf-8') > mb_strlen($b, 'utf-8')) return 1;
}
// Сортируем элементы массива с применением функции
usort($words, "mysort");
// Выводим результат сортировки
while(list($key, $val) = each($words))
{
echo "$val<br>";
}</span>
P.S. В том числе и для корректного отображения в различных кодировках.
Спустя 15 минут, 35 секунд (25.02.2010 - 13:40) sergeiss написал(а):
Цитата (baston @ 25.02.2010 - 14:25) |
function mysort($a, $b) { if(mb_strlen($a, 'utf-8') < mb_strlen($b, 'utf-8')) return -1; if(mb_strlen($a, 'utf-8') == mb_strlen($b, 'utf-8')) return 0; if(mb_strlen($a, 'utf-8') > mb_strlen($b, 'utf-8')) return 1; } |
Последнюю строку можно упростить Потому что ты туда попадешь только в случае, когда это условие уже выполняется. Поэтому вместо последней строки можно просто написать return 1;
Спустя 15 минут, 12 секунд (25.02.2010 - 13:56) baston написал(а):
Спасибо.
Значит ли это, что данное решение задачи верное в принципе? Или могут быть и другие варианты решения?
Значит ли это, что данное решение задачи верное в принципе? Или могут быть и другие варианты решения?
Спустя 51 минута, 26 секунд (25.02.2010 - 14:47) sergeiss написал(а):
В качестве альтернативы можно написать полностью свою функцию сортировки. И она будет работать! Даже можно несколько функций сделать, с разными алгоритмами сортировки.
Вот только зачем изобретать велосипед? Есть уже готовые функции, одну из которых ты взял и использовал по делу.
Вот только зачем изобретать велосипед? Есть уже готовые функции, одну из которых ты взял и использовал по делу.
Спустя 3 минуты, 58 секунд (25.02.2010 - 14:51) baston написал(а):
ОК.