Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/238.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
匹配php数组中的所有值_Php - Fatal编程技术网

匹配php数组中的所有值

匹配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

用户可以使用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是数组中的值。 我的桌子看起来像这样

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