如何检查array_intersect的结果是否为空?

时间:2016-11-11 00:38:18

标签: php

我试图将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)),但它也没有用。希望有人可以提供帮助。提前谢谢!

2 个答案:

答案 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);