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

Форум PHP

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

 

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

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

тема: Можно ли оптимизировать вывод результатов работы функции?
 
 автор: baston   (27.02.2010 в 22:00)   письмо автору
 
 

Продолжаю выполнять задачи из книги авторов сайта. В данном случае задача 5.3 на странице 158. Нужно подсчитать, сколько в тексте содержится одно-, двух-, ... десятибуквенных слов.
Вот мое решение, но я не могу сообразить два момента:
1. Можно ли оптимизировать вывод результатов работы функции?
2. Если задается большее количество символов в слове в качестве 2-го аргумента функции чем имеется в наличии, то выводится сообщение об ошибке. Как бы перехватить эту ошибку?
Вот мой код:
$str = 'Проект, задуманный как «дом для отдыха в естественной обстановке»,
 представляет небольшой двухэтажный прямоугольник (5,85х7 м) со скатной кровлей,
позволяющий в полной мере насладиться окружающим видом на горы. В общем-то простой и
 небольшой дом получился довольно гармоничным, заметным и современным.';
$musor = array(",", ".", "'", "\"", "«", "»", "(", ")");
$str = str_replace($musor, "", $str);
$words = explode(" ", $str);

$wc = array();
$num;

function counterwords($w, $y)
{
  foreach($w as $val)
  {
    for($i=0; $i<count($val); $i++)
    {
      if(mb_strlen($val) == $y)
      {
        $num++;
          $wc[] = $val;
      }
        }
  }
  $mywords = implode(", ", $wc);
  return "<b>" .$mywords. "</b><br>Количество слов: " .$num. "<br><br>";
}

echo "Однобуквенные слова: " .counterwords($words, 1);
echo "Двухбуквенные слова: " .counterwords($words, 2);
echo "Трехбуквенные слова: " .counterwords($words, 3);
echo "Четырехбуквенные слова: " .counterwords($words, 4);
echo "Пятибуквенные слова: " .counterwords($words, 5);
echo "Шестибуквенные слова: " .counterwords($words, 6);
echo "Семибуквенные слова: " .counterwords($words, 7);
echo "Восьмибуквенные слова: " .counterwords($words, 8);
echo "Девятибуквенные слова: " .counterwords($words, 9);
echo "Десятибуквенные слова: " .counterwords($words, 10);

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

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