如何在 PHP 中查找单词组合
Posted
技术标签:
【中文标题】如何在 PHP 中查找单词组合【英文标题】:How To Find Words Combination In Php 【发布时间】:2016-08-10 06:30:16 【问题描述】:我有一个数组
$new_array=array('c','a','m','t','p');
现在我想找到单词表中存在的单词组合。
我尝试过,但没有成功。
这是我的 php 代码。
$words = array();
$set = powerSet($new_array,2);
$mysql = new mysqli("localhost","root","","startup");
$sql = "SELECT wordid from words WHERE lemma = '%s'" ;
foreach ($set as $key => $value)
$word = implode("", $value);
$wordPermutation = permute($word);
foreach($wordPermutation as $keyWord)
if(!in_array($keyWord, $words))
if($result = $mysql->query(sprintf($sql,$keyWord)))
var_dump(sprintf($sql,$keyWord));
if($result->num_rows > 0)
$words[] = $keyWord;
print_r($words);
function powerSet($in, $minLength = 1, $max = 10)
$count = count ( $in );
$members = pow ( 2, $count );
$return = array ();
for($i = 0; $i < $members; $i ++)
$b = sprintf ( "%0" . $count . "b", $i );
$out = array ();
for($j = 0; $j < $count; $j ++)
if ($b $j == '1')
$out [] = $in [$j];
if (count ( $out ) >= $minLength && count ( $out ) <= $max)
$return [] = $out;
return $return;
function permute($str)
if (strlen($str) < 2)
return array($str);
$permutations = array();
$tail = substr($str, 1);
foreach (permute($tail) as $permutation)
$length = strlen($permutation);
for ($i = 0; $i <= $length; $i++)
$permutations[] = substr($permutation, 0, $i) . $str[0] . substr($permutation, $i);
return $permutations;
我只想从表中存在的数组中找到那些组合。
我的代码正在获取所有组合
【问题讨论】:
【参考方案1】:我可能误解了这一点,但您不能为此使用单个数据库查询吗?
如:
SELECT wordid FROM `words` WHERE lemma LIKE ("%c%") OR lemma LIKE ("%a%") OR lemma LIKE ("%m%") OR lemma LIKE ("%t%") OR lemma LIKE ("%p%")
这样,您将获得包含任何指定字符的任何单词的 wordid 数组。
我会将其添加为评论,但还没有足够的代表。
【讨论】:
这不是问题的通用解决方案以上是关于如何在 PHP 中查找单词组合的主要内容,如果未能解决你的问题,请参考以下文章
如何在没有意外匹配的情况下在 PHP 中的字符串中查找整个单词?