所以我正在阅读这本关于PHP的面向对象编程的书,在一个示例方法中,作者正在检查数据类型,我遇到了这个函数:
//class AddressManager...
function outputAddresses( $resolve ) {
if ( is_string( $resolve ) ) {
$resolve =
( preg_match("/false|no|off/i", $resolve ) )?
false:true;
}
// ...
}
谁能告诉我它的目的是什么?这些属性并不重要,但它是一种设计用于将字符串转换为布尔值的方法(我认为)。
答案 0 :(得分:2)
preg_match
本身不会将字符串转换为布尔值,它是正则表达式匹配函数。你所拥有的是一个三元表达式,几乎可以对此进行评估:
class AddressManager
...
function outputAddresses( $resolve )
{
if ( is_string( $resolve ) )
{
if (preg_match("/false|no|off/i", $resolve))
{
$resolve = false;
} else {
$resolve = true;
}
// $resolve = ( preg_match("/false|no|off/i", $resolve ) )? false:true;
}
// ...
}
答案 1 :(得分:0)
如果变量$ resolve以不敏感的方式包含“false”或“no”或“off”(忽略大小写),则返回FALSE。否则返回TRUE。
看起来像一个简单的用户输入检查器(而不是一个非常好的)。例如,如果您输入“nothing”或“now”,会发生什么?
答案 2 :(得分:0)
以上的伪代码。
if( $resolve equals false or no or off)
then
set $resolve as false
else
set $resolve as true
? (三元运算符)只是替换上面的代码行。这就是幕后发生的事情。