我有一个数组,其中每个元素都有一个带有多个ID的子数组。循环遍历数组时,我想检查子数组是否包含除给定数组之外的任何元素。
例如,每当其中一个子阵列有“TESTID”以外的任何ID时,我都会回答“是”。
我可以通过遍历子数组来实现这一点,但我想知道一种不需要双循环的方法。
这是当前的代码:
foreach ($elements as $element) {
...
if (besidesInArray('TESTID',$element['ids'])) {
//operations
} else {
//element only has 'TESTID'
}
...
}
...
function besidesInArray($needle, $haystack) {
foreach ($haystack as $hay) {
if($hay != $needle) {
return TRUE;
}
}
return FALSE;
}
虽然这段代码有效,但我想看看是否有更优雅的解决方案。
答案 0 :(得分:1)
您可以使用in_array()
功能来实现此目标
foreach($array as $key => $subarray)
{
if(in_array("TESTID", $subarray))
{
//found
} else {
//not found
}
}
答案 1 :(得分:0)
preg_grep
TESTID
但反转grep以便它返回不匹配的条目。
foreach($array as $subarray) {
if(preg_grep("/TESTID/", $subarray, PREG_GREP_INVERT)) {
echo 'Yes'; //others found
}
}
TESTID
可能是var。男人我爱一些preg_grep
!
答案 2 :(得分:-1)
find = implode(')|(',$mypatternarray);
find.="(".find.")";
foreach($subarray as $subar){
if(preg_match("find",$subar)>0)){
echo "id found";
}
}