我的系统前端有几个复选框,用户选中这些复选框以从数据库结果中过滤结果。有 6 个复选框。
在数据库中,每个配置文件都可以分配一个或多个复选框值,因此通过单击复选框,用户可以过滤许多配置文件,并且每个配置文件都必须包含当前选中的复选框。
我的问题是我有一半的工作,但似乎无法弄清楚如何完成它的逻辑。那里似乎仍然有不匹配的值:
$pieces = explode(", ", $row['competency']);
foreach(array_keys($_POST['competencyFilter']) as $filter){ //each chosen
if(in_array($filter, $pieces)){ //if this chosen is in the db
if(in_array($row['ID'], $resultList)){
}else{
$resultList[] = $row['ID'];
}
}else{
if(($key = array_search($row['ID'], $resultList)) !== false) {
unset($resultList[$key]);
}
//continue 2;
}
}
我不确定这里的逻辑对于我想要的是否过于复杂,但目前它循环遍历复选框中当前勾选的所有值,并且对于每个值,如果它存在于配置文件中,它会将配置文件 ID 添加到数组。
问题是一些配置文件 ID 保留在最终数组 $resultList[] 中,即使勾选了不在该配置文件中的复选框。
我希望这是有道理的...
编辑
这是存储在数据库中的每个配置文件中的数组数据(显然每个配置文件将包含不同的值,但总共有 6 个):
thermXMbb, thermXPbb, thermXMrf, thermXPrf, .. , ..
总共有 6 个,还有 6 个复选框,每个复选框一个。