我正在尝试构建一个函数,该函数将被赋予一个数组。然后从这个数组中,遍历数据库中的整个表,尝试查找匹配项。如果它找到匹配的话。我希望它从数据库表中回显出该匹配的ID。
如果可能的话,我还希望它能说出是否找到了相似的匹配项?
让我感到棘手的是,它需要匹配所有的值,而不管它们的顺序。
例如,如果函数被赋予这个数组:
$array = array(1,2,3,4,5)`并在数据库中找到此数组:
$array = array(2,3,5,1,4)它应该认为这是一个匹配
另外,如果它找到
array(1,2,3,4,5,6)它应该将this this作为匹配项输出,但值6除外。
发布于 2013-12-12 04:12:48
让我回答你的问题,对吗?
基于ID数组,返回ID在数组中的所有记录。
如果是,请使用IN operator
SELECT *
FROM tableName
WHERE columnName IN (value1, value2, value3, etc.)因此,首先我们需要将给定的数组转换为逗号分隔的列表:
$comma_seperated = implode(', ', $array);现在我们有了一个逗号分隔的列表,可以在查询中使用:
$comma_seperated = implode(', ', $array);
$query = "SELECT *
FROM tableName
WHERE id IN (" . $comma_seperated . ")";
// execute query, don't use mysql_* functions, etc. ;)发布于 2013-12-12 04:22:29
您可以使用以下任何选项:
选项1:
$array = array(1,2,3,4,5);
$query = "SELECT id FROM youtable WHERE id IN(".implode(",",$array).")";选项2:
$array = array(1,2,3,4,5);
$query = "SELECT id FROM yourtable";//Select ids现在迭代查询结果,假设结果存储在$query_results中,
$result=array();
foreach($query_results as $row){
if(in_array($row['id'],$array)){
$result[] = $row['id'];
}
}发布于 2013-12-12 03:05:20
您可以使用数组差来获得结果,只需运行代码,您就会理解第一种情况
$array1 = array(1,2,3,4,5);
$array2 = array(1,2,3,4,5,6);
$result = array_diff($array1, $array2);
print_r($result);案例2
$array1 = array(1,2,3,4,5);
$array2 = array(1,2,3,4,5,6);
$result = array_diff($array2, $array1);
print_r($result);然后你可以计算$result的数量,并把它放入你的逻辑中。
https://stackoverflow.com/questions/20527575
复制相似问题