如何从数组中检查表中是否存在值

时间:2016-04-18 18:07:05

标签: php mysql arrays

我有一个来自函数的组合列表; 我有一个数组

$new_array=array(5 random values);


$new_array = array(); // create a new array
$sql=mysql_query("SELECT * FROM animate ORDER BY RAND() LIMIT 5") or die("query Field");

 while($row=mysql_fetch_array($sql)){

    $new_array[] = $row['code'];

 }

假设我在数组中有这些值

$new_array=array('a','c','d','e','t','s');

我拥有来自某个功能的所有可能的排列。

现在我想找出表中是否存在这些排列。 我尝试过选择查询但失败了。

我的排列函数如下所示

function pc_permute($items, $perms = array()) {
    if (empty($items)) { 
        echo join(' ', $perms) . "<br />";
    } else {
        for ($i = count($items) - 1; $i >= 0; --$i) {
             $newitems = $items;
             $newperms = $perms;
             list($foo) = array_splice($newitems, $i, 1);
             array_unshift($newperms, $foo);
             pc_permute($newitems, $newperms);
         }
    }
}

$arr = $new_array;
$a=count(pc_permute($arr));

我卡住了,我正在尝试从最后3个小时但是失败了我想检查这些排列是否存在于mysql表中。

1 个答案:

答案 0 :(得分:0)

由于所有值都是唯一的,因此有一种解决方案可以满足您的需求。查询是:

select * from YOURTABLE where
VALUE like '%$val1%'
and VALUE like '%$val2%'
and VALUE like '%$val3%
etc...

假设您有一个名为$ new_array的数组,它有5个索引。您可以使用查询:

$query = "select * from words where
lemma like '%".$new_array[0]."%'
and lemma like '%".$new_array[1]."%'
and lemma like '%".$new_array[2]."%'
and lemma like '%".$new_array[3]."%'
and lemma like '%".$new_array[4]."%'
and lemma like '%".$new_array[5]."%'";

因为您没有在问题中说明,我不知道表的实际名称是什么或列的实际名称。我也不知道你如何获得$ new_array数组的5个随机值。

您要问的是一个值,其中包含您从函数中获得的每个元素。无论排列如何,它都将获得所有值。我假设您已经具备使用数组索引而不是$ val1,$ val2等编写查询的技能。如果没有,请询​​问。

这里的明显优势是您不必计算所有排列,也不必发送多个查询。