当传递给内置函数 strpos() 的参数 'needle' 不是字符串时,如何执行对内置函数 chr() 的显式调用?



我在运行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()调用来保留/.. 中的当前行为。在线。。

相关内容

最新更新