【问题标题】:PHP get the max match word array value from an extensive arrayPHP从一个扩展数组中获取最大匹配词数组值
【发布时间】:2021-07-15 01:45:33
【问题描述】:

我正在尝试创建一个函数来从扩展数组中获取最大匹配词数组值。 我没有 PHP 方面的专业知识。巫婆PHP函数没有循环数组吗?

例子

$word  = "My New Scooter is very Good":

$array = [
    "Good Scooter"
    "lovely very Good Scooter"
    "Scooter is very Good and New"
    "Scooter is very Good and its My New Scooter"
]

第 4 个数字数组有 All word,所以函数应该返回“Scooter is very Good and its My New Scooter”。

上面只是一个例子,但数组很广泛。

【问题讨论】:

  • 如果您的数组中的多个项目包含所有单词(或相同数量的匹配单词)怎么办?
  • @CasimiretHippolyte 然后返回最大匹配字数第一个值。
  • 您可能有兴趣了解 Naive-Bayes 分类,您可以将数组提供给它,它会返回最佳匹配,像 PHP-ML 这样的库很少,还有 github.com/niiknow/bayes 这很简单

标签: php arrays function


【解决方案1】:

除了在 my little pony 的魔法世界中,如果不循环,您将无法做到这一点。

$sentence = 'My New Scooter is very Good';

$array = [
    "Good Scooter",
    "lovely very Good Scooter",
    "Scooter is very Good and New",
    "Scooter is very Good and its My New Scooter"
];

$words = explode(' ', $sentence);

$winner = ['index' => false, 'count' => 0 ];

foreach ($array as $k => $v) {
    $common = array_intersect($words, explode(' ', $v));
    
    if ( $winner['count'] < count($common) )
        $winner = ['index' => $k, 'count' => count($common)];

    if ( $winner['count'] === count($words) )
        break;
}

var_dump($winner);

demo

随意构建一个函数来使用return 而不是break

【讨论】:

    猜你喜欢
    • 2011-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多