我试图将array_intersect的结果检查为常规数组,但即使数组为空,它也总是返回true。
$lecturedayssplit1 = preg_split("/(?=[A-Z])/", "TF");
$lecturedayssplit2 = preg_split("/(?=[A-Z])/", "MTh");
$lectolec=array_intersect($lecturedayssplit1,$lecturedayssplit2);
if (count($lectolec) > 0) {
echo "Yeah!!!";
print_r($lectolec);
} else {
echo "Nooo!";
print_r($lectolec);
}
问题中的 $lectolec
不应该返回大于0的计数,因为两个数组之间没有交集。我也试过if (empty($lectolec))
,但它也没有用。希望有人可以提供帮助。提前谢谢!
答案 0 :(得分:0)
别介意的人,我明白了。我将条件更改为if (count($lectolec) > 1)
,因为即使数组为空,它总是至少有一个计数
答案 1 :(得分:0)
因为你正在使用"零宽度正向前瞻" (?=[A-Z])
正则表达式,它在每个测试开始时匹配一个空序列。因此,array_intersect
匹配两个中的空序列。
您可以使用标记PREG_SPLIT_NO_EMPTY
忽略这些空结果。
$lecturedayssplit1 = preg_split("/(?=[A-Z])/", "TF", -1, PREG_SPLIT_NO_EMPTY);
$lecturedayssplit2 = preg_split("/(?=[A-Z])/", "MTh", -1, PREG_SPLIT_NO_EMPTY);