首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何遍历数据库结果,将每个值与数组中的值进行比较,并返回匹配的id?

如何遍历数据库结果,将每个值与数组中的值进行比较,并返回匹配的id?
EN

Stack Overflow用户
提问于 2013-12-12 02:52:41
回答 4查看 1.6K关注 0票数 0

我正在尝试构建一个函数,该函数将被赋予一个数组。然后从这个数组中,遍历数据库中的整个表,尝试查找匹配项。如果它找到匹配的话。我希望它从数据库表中回显出该匹配的ID。

如果可能的话,我还希望它能说出是否找到了相似的匹配项?

让我感到棘手的是,它需要匹配所有的值,而不管它们的顺序。

例如,如果函数被赋予这个数组:

代码语言:javascript
运行
复制
$array = array(1,2,3,4,5)`

并在数据库中找到此数组:

代码语言:javascript
运行
复制
$array = array(2,3,5,1,4)

它应该认为这是一个匹配

另外,如果它找到

代码语言:javascript
运行
复制
array(1,2,3,4,5,6)

它应该将this this作为匹配项输出,但值6除外。

EN

回答 4

Stack Overflow用户

发布于 2013-12-12 04:12:48

让我回答你的问题,对吗?

基于ID数组,返回ID在数组中的所有记录。

如果是,请使用IN operator

代码语言:javascript
运行
复制
SELECT *
FROM tableName
WHERE columnName IN (value1, value2, value3, etc.)

因此,首先我们需要将给定的数组转换为逗号分隔的列表:

代码语言:javascript
运行
复制
$comma_seperated = implode(', ', $array);

现在我们有了一个逗号分隔的列表,可以在查询中使用:

代码语言:javascript
运行
复制
$comma_seperated = implode(', ', $array);

$query = "SELECT *
FROM tableName
WHERE id IN (" . $comma_seperated . ")";

// execute query, don't use mysql_* functions, etc. ;)
票数 1
EN

Stack Overflow用户

发布于 2013-12-12 04:22:29

您可以使用以下任何选项:

选项1:

代码语言:javascript
运行
复制
$array = array(1,2,3,4,5);
$query = "SELECT id FROM youtable WHERE id IN(".implode(",",$array).")";

选项2:

代码语言:javascript
运行
复制
$array = array(1,2,3,4,5);
$query = "SELECT id FROM yourtable";//Select ids

现在迭代查询结果,假设结果存储在$query_results中,

代码语言:javascript
运行
复制
$result=array();
foreach($query_results as $row){
   if(in_array($row['id'],$array)){
           $result[] = $row['id'];
   }

}
票数 1
EN

Stack Overflow用户

发布于 2013-12-12 03:05:20

您可以使用数组差来获得结果,只需运行代码,您就会理解第一种情况

代码语言:javascript
运行
复制
$array1 = array(1,2,3,4,5);
$array2 = array(1,2,3,4,5,6);
$result = array_diff($array1, $array2);

print_r($result);

案例2

代码语言:javascript
运行
复制
$array1 = array(1,2,3,4,5);
$array2 = array(1,2,3,4,5,6);
$result = array_diff($array2, $array1);

print_r($result);

然后你可以计算$result的数量,并把它放入你的逻辑中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20527575

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档