2015-10-13 3 views
-3

У меня есть два списка слов. Идея состоит в том, чтобы подсчитать, сколько раз каждое слово появляется в статье, а затем вычислять разницу.PHP Count occention из 2 списков слов появляется строка

Пример:

List1 = "how, now, brown, cow" 
List2 = "he, usually, urges, an, umbrella, upon, us" 

Содержание: "Как я могу купить корову, когда зонтик дешевле"

Результат: List1(2) - List2(1) = 1

У меня есть довольно noobish PHP навыки.

+1

Вы можете использовать 'in_array' http://php.net/manual/en/function.in-array.php –

+1

Как' List2 (1) '? Должно ли это быть 'List2 (2)'? –

+0

в списке2 у вас есть зонт и так, list2 = 2. –

ответ

0

В этом случае мы можем использовать функции Php explode и как указано incognito-skull, in_array. Вы можете сделать это, делая что-то вроде так:

$list1 = ['how', 'now', 'brown', 'cow']; 
$list2 = ['he', 'usually', 'urges', 'an', 'umbrella', 'upon', 'us']; 

$timesAList1WordAppeared = 0; 
$timesAList2WordAppeared = 0; 

$text = "how can I buy a cow when the umbrella is cheaper?"; 
$wordArray = explode(' ', $text); 

foreach ($wordArray as $word) { 
    if (in_array($word, $list1)) { 
     $timesAList1WordAppeared++; 
    } 

    if (in_array($word, $list2)) { 
     $timesAList2WordAppeared++; 
    } 
} 

echo "The difference is: ".($timesAList1WordAppeared - $timesAList2WordAppeared); 

Давайте идти на шаг за шагом

Сначала мы инициализируем массив и счетчик переменных

$list1 = ['how', 'now', 'brown', 'cow']; 
$list2 = ['he', 'usually', 'urges', 'an', 'umbrella', 'upon', 'us']; 

$timesAList1WordAppeared = 0; 
$timesAList2WordAppeared = 0; 

Затем мы инициализируем текст

$text = "how can I buy a cow when the umbrella is cheaper?"; 

Затем мы разделить этот текст используя пробел, чтобы получить слова. Это где функция explode приходит и мы используем его как так

$wordArray = explode(' ', $text); 

Первый аргумент символ или строка, которую мы будем использовать, чтобы разделить текст, а второй аргумент является сам текст. Затем мы переходим к нашим словам и подсчитываем, сколько раз в тексте появляется слово в наших list1 и list2. Мы делаем это как так

foreach ($wordArray as $word) { 
    if (in_array($word, $list1)) { 
     $timesAList1WordAppeared++; 
    } 

    if (in_array($word, $list2)) { 
     $timesAList2WordAppeared++; 
    } 
} 

код выглядит следующим образом, для каждого word в нашем wordArray, если word является in_[the]_arraylist1, приращение timesAList1WordAppeared. Если это word также in_[the]_arraylist2, добавьте timesAList2WordAppeared.

Наконец, чтобы распечатать результат

echo "The difference is: ".($timesAList1WordAppeared - $timesAList2WordAppeared); 
Смежные вопросы