可能是重复问题:
检查一个数组是否包含另一个数组的所有元素
我之前在Stackoverflow上发布过类似的问题,但答案并没有完全满足我的需求。这就是为什么我再次发布问题,但同时更改了问题。
一些人帮助我构建了一个函数,检查一个多维数组array($GroupOfEight)
中的元素array($GroupOfEight[$i])
是否等于另一个数组$stackArray
,忽略数组中元素的顺序。
然而,我需要检查的是所提到的array($stackArray)
是否包含多维数组array($GroupOfEight[$i])
中的任何一个,也就是说,主数组array($stackArray)
可以比子数组subarrays($GroupOfEight[$i])
包含更多的元素。
这是目前我收集到的一个可行的代码,但需要修改成我想要的版本:
<?php
$GroupOfEight = array (
array(0,1,3,2,4,5,7,6),
array(4,5,6,7,15,12,13,14),
array(12,13,15,14,8,9,11,10),
array(2,6,14,10,3,7,15,11),
array(1,3,5,7,13,15,9,11),
array(0,4,12,8,1,5,13,9),
array(0,1,3,2,8,9,11,10)
);
$stackArray = array(0,4,12,1,9,8,5,13,9,2,5,2,10);
/*$stackArray gets value with POST Method by URL parameter.
This is just the example. As you see this array contains
$GroupOfEight[4], and also it contains many other numbers.*/
/* The function given below checks if $stackArray equals any
of the subarrays of $GroupOfEight. However, we want to check
if $stackArray caontains any of the subarrays of function.
If it does, function should return the index number, if it
doesnt it should return -1.*/
function searcheight($stackArray,$GroupOfEight){
for($i=0; $i<count($GroupOfEight);$i++){
$containsSearch = (count(array_intersect($stackArray,$GroupOfEight[$i])) == count($stackArray) && count(array_intersect($stackArray,$GroupOfEight[$i])) == count($GroupOfEight[$i]));
if($containsSearch){
return $i; //This specifies which index in GroupOfEight contains a matching array
}
}
return -1;
}
// Calling the function that is given above.
echo searcheight($stackArray,$GroupOfEight);
?>
非常感谢您提供任何关于IT技术方面的逻辑想法或解决方案。谢谢。
array(0,4,12,8,1,5,13,9)
中要搜索的数字 4 比其他数字多。 - Baba$stackArray
的长度与结果无关...你只是在检查16
8
4
等可能性吗??? - Baba