将 preg_match() 结果与 (bool) 一起使用?

Use preg_match() result with (bool)?

我想我会将 preg_match() 的结果与 (bool) 一起使用,但我不太确定。我认为结果不是truefalse不清楚。 示例 1:

if (((bool) preg_match($pattern, $string, $matches)) === true)

示例 2:

if (((bool) !preg_match($pattern, $string, $matches)) === true)

示例 3:

if (((bool) preg_match($pattern, $string, $matches)) === false)

示例 4:

if (((bool) !preg_match($pattern, $string, $matches)) === false)

另一种想法是:结果为01的东西将来也安全吗?你有这方面的经验吗?你能报告什么?

EDIT 0:鉴于 if 没有比较运算符,问题得到了扩展。 0 总是 false1 总是 true 吗?

示例 5:

if ((preg_match($pattern, $string, $matches)))

示例 6:

if ((!preg_match($pattern, $string, $matches)))

这是正确的吗?
(preg_match($pattern, $string, $matches)) = 0 | 1
(!preg_match($pattern, $string, $matches)) = true | false
不是!

preg_match() returns 如果模式匹配给定主题则为 1,如果不匹配则为 0,如果发生错误则为 FALSE。 这是 3 个可能的答案。如果将其简化为布尔值 (true/false),则会丢失一些信息。

$result = (bool) preg_match($pattern, $string, $matches);

$result 如果模式匹配则为真,否则为假或发生错误。

这个if条件只有在preg_match returns 1.

时才会执行
if (preg_match($pattern, $string, $matches)) {

}

如果不执行可能不匹配或出错

必须进行严格比较才能区分所有 3 个变体:

$preg_match_result = preg_match($pattern, $string, $matches);

if($preg_match_result === 1) {
  //pattern matches

}
elseif($preg_match_result === 0) {
  //pattern not matches

}
else {
  //$preg_match_result === false   
  //an error occurred

}