【问题标题】:PHP Find words into string [closed]PHP在字符串中查找单词[关闭]
【发布时间】:2019-12-16 23:48:51
【问题描述】:

我有以下关键字。我希望最终答案(可能是 answer_1、answer_2、answer_3)是包含“问题”中的关键字的答案。

$question = 'how old are you'

$key_word_1 = array('old', 'are');
$answer_1 = 'this is my age';

$key_word_2 = array('yes', 'no');
$answer_2 = 'this is a question';

$key_word_3 = array('tall', 'short');
$answer_3 = 'this are my measures';

$key_word_4 = array('back', 'blue');
$answer_4 = 'My colorus';

echo $final_answer;
'this is my age' . #----> because 'old' and 'are' are contained in $question

【问题讨论】:

  • 您需要拆分字符串,然后遍历每个索引并针对每个问题进行检查,将计数加一。但是,如果你最终得到一个均分(两个不同的问题中的一个词,总共两个词)怎么办?

标签: php arrays string


【解决方案1】:

我会这样做(使用array_intersect):

$question = 'how old are you';

$question_array = explode(' ',$question);

$answers_array[0]['keywords'] = array('old', 'are');
$answers_array[0]['answer'] = 'this is my age';

$answers_array[1]['keywords'] = array('yes', 'no');
$answers_array[1]['answer'] = 'this is a question';

$answers_array[2]['keywords'] = array('tall', 'short');
$answers_array[2]['answer'] = 'this are my measures';

$answers_array[3]['keywords'] = array('back', 'blue');
$answers_array[3]['answer'] = 'My colorus';

foreach($answers_array as $key=> $answer)
{
    if(sizeof(array_intersect($answers_array[$key]['keywords'], $question_array)) == sizeof($answers_array[$key]['keywords']))
    {
        $final_answer = $answers_array[$key]['answer'];
    }
}

echo $final_answer;

【讨论】:

  • 太好了,我想我没有说明必须满足至少一个条件。你不必同时满足两者。因此,用“你好吗”,我也应该返回“这是我的年龄”。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-04-21
  • 1970-01-01
  • 1970-01-01
  • 2012-10-30
  • 2015-12-05
  • 1970-01-01
相关资源
最近更新 更多