这是我的第一篇文章,所以请光临我。如果这个问题有一个非常简单的解决方案,或者我没有非常清楚地解释自己,我会事先道歉。 - 另外,我大部分都是自学成才,如果我的工作很草率,我很抱歉。
我正在尝试构建一个将被赋予数组的函数。从这个数组中,遍历数据库中的整个表,试图找到匹配项。如果确实找到了匹配项。我希望它从数据库表中回显出该匹配的ID。
如果可能,我还想说它是否发现任何近距离匹配?
让我觉得棘手的是它需要匹配所有值,尽管它们的顺序......
例如,如果函数给定此数组:
$array = array(1,2,3,4,5)
并在数据库中找到此数组:
$array = array(2,3,5,1,4)
它应该认为这是一个匹配
另外,如果发现;
array(1,2,3,4,5,6)
除了值6之外,它应该将此输出为匹配;
我希望我已经足够清楚了。提前感谢您的任何帮助,所有的帮助表示赞赏。
提前谢谢你,格雷格。
答案 0 :(得分:1)
让我重新回答你的问题,这是正确的吗?
根据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. ;)
答案 1 :(得分:1)
您可以使用以下任何选项:
选项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'];
}
}
答案 2 :(得分:0)
您可以使用数组差异来获取结果,只需运行代码即可理解 案例1
$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并把它放在你的逻辑中。
答案 3 :(得分:0)
案例1:
也许您可以从数据库中选择唯一值。
SELECT DISTINCT unique_values_that_need_for_compare_column FROM table
此SQL结果将是 $ databaseValues 变量值。
迭代函数获取的数组。
foreach ($functionArray as $value) {
if (in_array($value, $databaseValues)) {
// you have a match
echo $value;
}
}
案例2:
或者您可以对每个值进行查询:
foreach ($functionArray as $value) {
$query = "SELECT COUNT(*) as match FROM table WHERE unique_values_that_need_for_compare_column = " . intval($value);
// fetch the result into the $queryResult variable and than check
if ($queryResult['match']) {
// you have a match
echo $value;
}
}