システムのフロントエンドにいくつかのチェックボックスがあり、ユーザーはボックスをチェックして、データベースの結果から結果をフィルタリングします。6 つのチェックボックスがあります。
データベースでは、各プロファイルにこれらのチェックボックスの値を 1 つ以上割り当てることができるため、チェックボックスをクリックすると、ユーザーは多くのプロファイルをフィルタリングし、それぞれに現在チェックされているチェックボックスが含まれている必要があります。
私の問題は、半分は機能していることですが、それを終了する方法についてのロジックがまったく理解できないようです。一致しない値がまだそこにあるようです:
$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[] に残ることです。
これが理にかなっていることを願っています...
編集
DB に保存されている各プロファイルの配列データは次のとおりです (プロファイルごとに異なる値が含まれていることは明らかですが、全部で 6 個あります)。
サームXMbb、サームXPbb、サームXMrf、サームXPrf、..、..
全部で 6 個あり、それぞれに 1 つずつ、合計 6 個のチェックボックスがあります。