当我在php上进行正则表达式验证时,我发现了这一点。
我已使用preg_match
函数验证字符串。
我刚刚打印了preg_match
返回的值,以确保工作流程。
在此期间,我发现了一件事。但无法理解他们的概念。
如果找到匹配,则preg_match()
返回1。否则它将返回0.但有时我的打印功能没有打印任何东西。
在我通过php手册了解其所有返回值后......
他们发布了以下内容......
如果模式与给定主题匹配,则preg_match()返回1,否则返回0;如果发生错误,则返回FALSE。
然后我用var_dump
知道打印的是什么......
这让我知道布尔是假的。
但我很想知道为什么它会返回布尔值假,当我只是把" ! " (不)在preg_match()
之前?
以下是我的代码,
echo preg_match("/script/","script") // ===> this returs 1
echo !preg_match("/script/","script") // ===> this returns boolean false
我认为它必须返回整数0(零)...可以帮助我了解它的功能吗?或者我在语法上做错了什么???
有一件事,我在Opencart 2.0.0.0管理控制器模块中试过这个。
答案 0 :(得分:1)
bool
运算符将始终返回布尔值。
一个人!运算符结果的类型是bool。操作数的值转换为bool类型,如果为TRUE,则运算符结果为FALSE,否则结果为TRUE。
Langspec参考:https://github.com/php/php-langspec/blob/PHP-5.6/spec/10-expressions.md#unary-arithmetic-operators
将POSIXt
的正常转化规则应用于该值。
答案 1 :(得分:0)
当您在函数前放置isBlueCandle()
时,您不会回显preg_match的返回值。你正在使用php的运算符来确定它是否松散地评估为真还是假。
!
与!preg_match("/script/","script")
相同。请注意preg_match("/script/","script") == false
而不是==
。 0,null,空字符串和布尔值false将松散地评估为false。