匹配php数组中的所有值
用户可以使用select和checkbox表单搜索某些内容。数据在GET变量中发送。 我收集了变量中所有可能的值,并将其放入数组: $term\u taxomony\u ids\u array=array$term\u taxonomy\u id\u m、$term\u taxonomy\u id\u t\u 1、$term\u taxonomy\u id\u t\u 2、$term\u taxonomy\u id\u t\u 3、$term\u taxonomy\u taxonomy\u id\u t\u 4、$term\u taxonomy\u id\u t\u t\u 5、$term\u taxonomy\u taxonomy\u id\u\u id\u t\u t\u t\u 6、$term\u taxonomy\u taxonomy\u id\u\u\u; 打印\u r$term\u taxomony\u id\u数组;然后会给 例如: 我如何使这个数组更简单,但如注释中所建议的那样完全忽略空结果? 我需要在数据库中找到符合所选所有条件的“位置”。 我的数据库表已经设置好,所以我有两列。 1.对象标识2。术语\分类\ id。 术语_taxonomy_id是数组中的值。 我的桌子看起来像这样匹配php数组中的所有值,php,Php,用户可以使用select和checkbox表单搜索某些内容。数据在GET变量中发送。 我收集了变量中所有可能的值,并将其放入数组: $term\u taxomony\u ids\u array=array$term\u taxonomy\u id\u m、$term\u taxonomy\u id\u t\u 1、$term\u taxonomy\u id\u t\u 2、$term\u taxonomy\u id\u t\u 3、$term\u taxonomy\u taxonomy\u id
Object id term_taxonomy_id
2 12
2 3
3 12
3 14
3 9
3 2
4 5
5 9
因此,只有object_id“3”匹配数组中的所有项-12、14、9、2
如何运行查询以查找此结果?
我使用的是一个mysql数据库phpmyadmin,我的网站是建立在wordpress上的。
谢谢在中使用,与COUNT和have/GROUP结合使用
$array = array_filter(array_unique($array));
$count = count($array);
$sql = "SELECT id, COUNT(*) FROM table WHERE field IN (" . implode(',', $array) . ") GROUP BY id HAVING COUNT(*) = " . $count;
SQL可能有点不对劲,您可能需要重新排序和分组。基本上:
SELECT objectID, COUNT(term_taxonomy_id) AS cnt
FROM yourtable
WHERE term_taxonomy_id IN (2, 9, 14, 12)
GROUP BY objectID
HAVING cnt = 4
查找具有一个或多个匹配分类ID的所有ObjectID,然后仅返回具有四个匹配分类ID的对象ID。您可能应该使用您正在使用的DB平台标记您的问题。因此[0]=>12是分类ID 12,您想检索对象ID 2?因为这是一种设置方式,最简单的方法是查询所选每个分类法值的对象id,并查找所有组中存在的对象id。@MarcB有4个分类法值,OP只需要与所有值匹配的对象id。哪个对象id 3是唯一的。空数组元素[2]=>,[3]=>,[5]=>,[7]=>,[8]=>,[9]=>?完全忽略它们,只使用赋值的元素。在本例中,只使用赋值为12、14、9、2的元素?我的最后一个查询是“$count=count$term\u taxomony\u ids\u array2;”/echo$count;$query=从$wpdb->term\U关系中选择对象\U id,其中$term\U taxomony\U id\U array3中的term\U TAXONY\U id按对象\U id分组,具有COUNT*=$COUNT;'谢谢你的帮助。
SELECT objectID, COUNT(term_taxonomy_id) AS cnt
FROM yourtable
WHERE term_taxonomy_id IN (2, 9, 14, 12)
GROUP BY objectID
HAVING cnt = 4