Задать вопрос
littleguga
@littleguga
Не стыдно не знать, а стыдно не интересоваться.

Какой алгоритм оптимальнее?

Задача: на вход получаем строку, состоящую из нескольких слов. разделенных пробелом.
Например: "я люблю тостер, каждый день отвечаю и задаю вопросы здесь"
Нужно написать функцию, которая будет разрезать введенную строку на 2 строки, в зависимости от заданного количества слов.

//Обрезает заголовок на основной и под, разделяя по пробелам
function cut_title($thistitle,$count){ //заголовок и количество слов на которые стоит обрезать
	$post_title = explode(" ", $thistitle);
	$post_title_title = "";
	$i = 0;
	while($i < $count){
		$post_title_title .= $post_title[$i]." ";
		$i++;
	}
	$ctitle['title'] = $post_title_title;
	$ctitle['sub'] = str_replace($post_title_title, "", $thistitle);
	return $ctitle; //возвращает массив $ctitle['title'] и $ctitle['sub']
}

Вопрос в том, как лучше построить цикл? Как есть или:
while($i++ < $count){
		$post_title_title .= $post_title[$i]." ";
	}

Или через for?

Интересует с точки зрения оптимальности, читаемости и неговнокодерства.

Заранее благодарен за подробный и развернутый ответ!
  • Вопрос задан
  • 308 просмотров
Подписаться 1 Оценить Комментировать
Ответ пользователя Ришат Кадыров К ответам на вопрос (3)
laska
@laska
PHP/JS разработчик
1. Для этих целей, как вы верно заметили, придумали for. Он сюда подходит идеально, как будто пример в учебнике.
2. Среди while, for и foreach нет самых лучших и самых худших циклов в плане говнокодерства. Они нужны немного для разного. И правильнокодерство это использование каждого цикла по назначению. Читаемость от этого тоде чуть улучшится.
3. В плане производительности foreach медленнее, остальные примерно равны, но это представляет чисто теоретический интерес.
Ответ написан
Комментировать