In php :
$task1["cat1"] = 1
$task1["cat2"] = 1
$task1["cat3"] = 1
$task2["cat1"] = 1
$task2["cat2"] = 1
$task3["cat1"] = 1
$task3["cat3"] = 1
$task4["cat1"] = 1
if (isset($task1["cat1"]) && isset($task1["cat2"] && !isset($task1["cat3"])
echo "task1 does match !"
if (isset($task2["cat1"]) && isset($task2["cat2"] && !isset($task2["cat3"])
echo "task2 does match !";
and so on ...