Как проверить, одно слово или несколько, и погрузить в 2 массива в php - PullRequest
0 голосов
/ 08 мая 2020

Мне нужно проверить массив строковых данных.

Например, это строка:

$keywords="today, tomorroy, world, is a good day , a good day is, today"

Мне нужно проверить, одно слово или несколько слов.

Если это несколько слов, я должен заказать и оставить только одно, например: хороший день; хороший день, мне нужно только уйти: хороший день. Эти слова мне нужно сохранить в другом массиве.

В итоге мне нужно получить только следующие результаты:

Это мой код:

     $keywords = "";          
     $singleword="";
     $multiword="";

     foreach ($response->getResults() as $result) {                
            $keywords .= $result->getText()->getValue() . ",";

            if(count(explode(' ', $keywords)) > 1) {
                $multiword++;                                                  
            }
            $singleword++;                                  
       }    
      return $keywordsgenerated;

Мне нужно возврат: сегодня, завтра, мир, хороший день, пожалуйста, помогите мне исправить, я новичок в php.

EDIT

1 Ответ

1 голос
/ 09 мая 2020

Думаю, вы искали что-то вроде этого:

<?php
$keywords="today, tomorrow, world, is a good day , a good day is, today";
$arr = array_unique(explode(",",$keywords));

$words = [];
foreach($arr as $key=>$a) {    
    $words_explode = explode(" ", $a);
    foreach($words_explode as $w) {
        $words[] = $w;
    }        
}
$new_words = array_unique($words);

$result = implode(" ", $new_words);
foreach($arr as $item) {
    $result = str_replace($item,$item.",",$result);
}
$result = trim($result,", ");
var_dump($result);

ОБНОВЛЕНИЕ:

Думаю? Я получил то, что вы искали?

$keywords = "hansgrohe,hansgrohe focus,küchenarmatur,hansgrohe metris";
$arr = explode(',', $keywords);
$already = [];
$result = '';
foreach($arr as $word) {
    $subword = explode(" ", $word);
    foreach($subword as $actual_word) {
        if (!in_array($actual_word, $already)) {
            $result .= $actual_word . ' ';  
            $already[] = $actual_word;      
        }                
    }
}
$result = rtrim($result);

//would result in hansgrohe focus küchenarmatur metris
echo $result; 

UPDATE2:

Если вы хотите узнать количество вхождений каждого слова.

<code><?php
$keywords = "hansgrohe,hansgrohe focus,küchenarmatur,hansgrohe metris";
$arr = explode(",", $keywords);
$already = [];
$nrwords = [];
$result = '';
foreach($arr as $word) {
    $subword = explode(" ", $word);
    foreach($subword as $actual_word) {
        if (!in_array($actual_word, $already)) {
            $result .= $actual_word . ' ';  
            $already[] = $actual_word;    
            $nrwords[$actual_word] = 0;
        }                
        $nrwords[$actual_word]++;
    }
}
$result = rtrim($result);

//would result in hansgrohe focus küchenarmatur metris
echo $result; 

//would show how many of each word that exists
echo '<pre>';
print_r($nrwords);
echo '
' ;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...