我在运行Windows 10家庭单语言64位操作系统的家用机器上使用PHP 7.3.4
我已经在这台机器上安装了最新版本的ox XAMPP安装程序。
今天,我从PHP手册中看到了以下文字:
针
如果needle不是字符串,则将其转换为整数和 应用为字符的序号值。此行为是 从 PHP 7.3.0 开始不推荐使用,强烈建议不要依赖它。 根据预期行为,针头应 显式转换为字符串,或者显式调用chr()应该是 执行。
从上面的语句中,我非常清楚地理解,如果传递给内置函数的参数"needle">不是字符串strpos()
我必须将其显式转换为字符串,但我不明白如何执行对内置函数的显式调用chr()
当参数"needle">传递给内置函数时strpos()
不是字符串。
由于我使用的是 PHP 的最新稳定版本,即 PHP 7.3.4,因此我想要特定于PHP 7.3.x版本的工作代码示例,该示例将演示当参数"针"传递给内置函数时如何执行对内置函数chr()
的显式调用strpos()
不是字符串。
如果有人也可以为我提供工作代码示例,该示例将演示传递给内置函数的参数"needle">是否不是字符串,strpos()
如何将其显式转换为字符串,那就更好了。
简而言之,我需要两个演示手册文本的工作代码示例。
谢谢。
$vs = [42, '42'];
foreach ($vs as $v) {
var_dump(
strpos('zz*z', is_string($v) ? $v : chr($v)),
strpos('zz42z', (string)$v)
);
}
输出:
int(2) // chr of 42 is "*"
int(2) // casting 42 to string gives you "42"
bool(false) // There's no "42" in first string
int(2) // casting string "42" to string still gives you a string "42"
在 php7.2 及更早版本中:
var_dump(
strpos('zz*z', 42),
strpos('zz42z', 42)
);
输出:
int(2) // 42 implicitly converted to "*"
bool(false) // 42 implicitly converted to "*"
在 php 7.3 中,您将获得相同的结果,但有警告:
已弃用:
strpos()
: 将来非字符串针将被解释为字符串。使用显式chr()
调用来保留/.. 中的当前行为。在线。。