Найти самое длинное слово из строки

692
15 января 2017, 18:31

Что нужно поправить в моём скрипте, чтобы он искал 3 самых длинных слова в строке?

<?php
$text = 'раз четыре шестьдесят сорок пользователь он автомобиль номер';
$arr = explode(" ", $text);
for ($i=0; $i<count($arr); $i++) {
    $max = $arr[0];
    if(strlen($arr[$i]) > strlen($max)){
        $max = $arr[$i];
      }
    }
echo $max;
?>

Сейчас он просто выводит слово номер

Answer 1

Вот пример кода, надеюсь ознакомитесь с используемыми функциями и доработаете до желаемого результата.

$text = 'раз четыре шестьдесят сорок пользователь он автомобиль номер';
$arr = array_flip(explode(' ', $text));
// определяем длину
foreach ($arr as $word => $length) {
    $arr[$word] = mb_strlen($word);
}
// сортируем
asort($arr);
// последние 3 элемента
$result = array_slice($arr, -3, 3);

P.S.

Для определения длины, к сожалению, всё ещё приходится использовать mbstring

Answer 2

Это предложение

$max = $arr[0];

следует поместить перед циклом. Иначе при каждой итерации каждое следующее слово сравнивается с первым словом.

Например,

$max = $arr[0];
for ($i=1; $i<count($arr); $i++) {
....
Answer 3

Вы на каждую итерацию перезаписываете $max, надо это делать до цикла

<?php
$text = 'раз четыре шестьдесят сорок пользователь он автомобиль номер';
$arr = explode(" ", $text);
$max = $arr[0];
for ($i=0; $i<count($arr); $i++) {
    if(strlen($arr[$i]) > strlen($max)){
        $max = $arr[$i];
      }
    }
echo $max;
?>
READ ALSO
mysqli_fetch в echo выдает &ldquo;Array&rdquo;

mysqli_fetch в echo выдает “Array”

Есть некоторый скрипт который отвечает за то, чтобы взять TEXT из столбика coord по запросу keyС помощью запроса SELECT я получаю эту строку

251
Вернуть валидный json php

Вернуть валидный json php

Доброго времени суток, столкнулся с тупой проблемой, с которой сижу пол дняЕсть php, который возвращает данные в формате json

347