Как получить доступ к элементам массива и посчитать слова в нем?

Итак, у меня есть упражнение, я провел некоторое исследование и сумел preg_split мою строку по точкам. Теперь у меня есть массив, как я хочу, и я хочу попасть внутрь элементов этого массива, чтобы я мог посчитать слова в каждом из элементов.
Могу ли я помочь с этим? Строка $ test написана на греческом языке.

$test = "Αυτή είναι η 1η δοκιμασία. Πρέπει να την ολοκληρώσω. Ώστε να μου δώσουν την 2η δοκιμασία. Και τέλος, την 3η δοκιμασία." ;
$res = preg_split ("/(.*?\.*?)\../", $test, NULL,
PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE);
print_r($res);

результат примерно такой:

Array
(
[0] => Αυτή είναι η 1η δοκιμασία
[1] => Πρέπει να την ολοκληρώσω
[2] => Ώστε να μου δώσουν την 2η δοκιμασία
[3] => Και τέλος, την 3η δοκιμασία.
)

и, как я сказал ранее, я хочу получить доступ к каждому элементу (например, [0], [1], [2], [3]) и вывести количество слов, которое есть у каждого из них. Но я не могу найти способ, как …

1

Решение

Это должно работать —

foreach($res as $str) {
print_r(count(explode(' ', $str)));
}

Выход

5
4
7
5

демонстрация

0

Другие решения

Вы можете использовать preg_split с array_map.

$test = "Αυτή είναι η 1η δοκιμασία. Πρέπει να την ολοκληρώσω. Ώστε να μου δώσουν την 2η δοκιμασία. Και τέλος, την 3η δοκιμασία." ;
$res = preg_split(
"/(.*?\.*?)\../",
$test,
null,
PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE
);
var_dump($res);

$wordcounts = array_map(function ($item) {
return count(preg_split('/\s+/', $item));
}, $res);

var_dump($wordcounts);

Выход: https://3v4l.org/JNBYX

0

Вы можете использовать word_wount при просмотре массива, чтобы узнать количество слов, и substr, чтобы узнать, есть ли слово в предложении.

<?php

$str = "Hello fri3nd, you're
looking          good today!";

print_r(str_word_count($str, 1));
print_r(str_word_count($str, 2));
print_r(str_word_count($str, 1, 'àáãç3'));

echo str_word_count($str);

?>

Приведенный выше пример выведет:

Array
(
[0] => Hello
[1] => fri
[2] => nd
[3] => you're
[4] => looking
[5] => good
[6] => today
)

Array
(
[0] => Hello
[6] => fri
[10] => nd
[14] => you're
[29] => looking
[46] => good
[51] => today
)

Array
(
[0] => Hello
[1] => fri3nd
[2] => you're
[3] => looking
[4] => good
[5] => today
)


<?php
$text = 'This is a test';
echo strlen($text); // 14

echo substr_count($text, 'is'); // 2

// the string is reduced to 's is a test', so it prints 1
echo substr_count($text, 'is', 3);

// the text is reduced to 's i', so it prints 0
echo substr_count($text, 'is', 3, 3);

// generates a warning because 5+10 > 14
echo substr_count($text, 'is', 5, 10);


// prints only 1, because it doesn't count overlapped substrings
$text2 = 'gcdgcdgcd';
echo substr_count($text2, 'gcdgcd');
?>

Источник: PHP.net

Более мощный и эффективный способ сделать это будет

<?php
if(preg_match($pattern,$sentence)); /** Sentece can be a list like $sentence[0]*/
$count++;
?>
the word.

На самом деле зависит от вашей структуры кода и ввода

0

Вы можете перебирать свой массив так, как хотите: используя for или же foreach петли.

$sentencesCount = count($res);
$wordsCounts = [];
for($i = 0; $i < $sentencesCount; $i++) {
$wordsCounts[$i] = str_word_count($res[$i]);
}

print_r($wordsCounts);

ИЛИ ЖЕ

$wordsCounts = [];
foreach($res as $key => $words) {
$wordsCounts[$key] = str_word_count($words);
}

print_r($wordsCounts);

Также, пожалуйста, проверьте PHP str_word_count () многобайтово безопасно? и документы http://php.net/manual/en/function.str-word-count.php

0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector