对对象使用is_string()将始终返回false(即使使用__toString())。
<?php
class B {
public function __toString() {
return "B() 的实例可以被视为字符串!\n";
}
}
$b = new B();
print($b); //B() 的实例可以被视为字符串!
print(is_string($b) ? 'true' : 'false'); //false
?>
(PHP 4, PHP 5, PHP 7, PHP 8)
is_string — 判断变量类型是否为字符串
value
被评估的变量。
示例 #1 is_string() 例子
<?php
$values = array(false, true, null, 'abc', '23', 23, '23.5', 23.5, '', ' ', '0', 0);
foreach ($values as $value) {
echo "is_string(";
var_export($value);
echo ") = ";
echo var_dump(is_string($value));
}
?>
以上示例将输出
is_string(false) = bool(false) is_string(true) = bool(false) is_string(NULL) = bool(false) is_string('abc') = bool(true) is_string('23') = bool(true) is_string(23) = bool(false) is_string('23.5') = bool(true) is_string(23.5) = bool(false) is_string('') = bool(true) is_string(' ') = bool(true) is_string('0') = bool(true) is_string(0) = bool(false)
对对象使用is_string()将始终返回false(即使使用__toString())。
<?php
class B {
public function __toString() {
return "B() 的实例可以被视为字符串!\n";
}
}
$b = new B();
print($b); //B() 的实例可以被视为字符串!
print(is_string($b) ? 'true' : 'false'); //false
?>
如前所述,is_string() 对具有 __toString() 方法的对象返回 false。这是一个简单的检查方法
<?php
// 判断传入的参数是否可以像字符串一样处理。
function is_stringy($text) {
return (is_string($text) || (is_object($text) && method_exists($text, '__toString' ));
}