我的系统前端有一些复选框,用户可以选中这些复选框来过滤数据库结果的结果。有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个复选框,每个复选框一个。