2016-11-11 23 views
0

array_intersectの結果を通常の配列としてチェックしようとしていますが、配列が空であっても常にtrueを返します。問題でarray_intersectの結果が空であるかどうかを確認するには?

 $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

正規表現「ゼロ幅の正の先読み」(?=[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); 
+0

こんにちは、ありがとう、これを試してみてください。 -1は何を表しますか? –

+0

'-1'は、結果の最大数に制限がないことを示します。 – Simon

0

私はそれを得ました。配列が空であっても常に少なくとも1つのカウントがあるので、条件をif (count($lectolec) > 1)に変更しました

+1

申し訳ありませんが、これはナンセンスです!配列が空の場合、 'count(array)'は '0'です。 – arkascha

+0

ええ、ハハは明らかに、これについて申し訳ありません。サイモンは、実際に私が認識していない交差点があることを指摘した –

関連する問題