php - 如何检查数组中的值是否存在于表中

标签 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 表中。

最佳答案

由于所有值都是唯一的,因此有一个解决方案可能适合您的需求。查询是:

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 等编写查询的技能。如果没有,请询​​问。

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

关于php - 如何检查数组中的值是否存在于表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36701270/

相关文章:

php - Windows cygwin gearman ./configure 显示 "configure: error: Unable to find libevent"错误

php - 如何加快地球另一端的网站加载速度

php - 在 PHP 中使用越南字符(不是 Unicode)的正确字符集

java - Java中如何从字节数组中获取数据?

php - PHP 网页抓取

php - propel-gen 的 "convert-conf"目标失败

mysql - 与 MYSQL 失去连接

mysql - 在外键中插入数据时出错?

python - 删除数组中的每第 n 个元素

arrays - 对(字符串)日期数组进行排序