2

在 8.1 中遇到一些不推荐使用的错误,我想解决。

PHP Deprecated: explode(): Passing null to parameter #2 ($string) of type string is deprecated in...

//explode uids into an array
$comp_uids = explode(',', $result['comp_uids']);

$result['comp_uids'] 在这种情况下为空,这就是显示 null 错误的原因。我不确定他们为什么要弃用此功能,但建议的更改是什么来避免这种情况?我看到strlen(): Passing null to parameter #1 ($string) of type string is deprecated和其他一些人使用 8.1 类似。

4

2 回答 2

3

如果值为 ,则使用空合并运算符将值默认为空字符串null

$comp_uids = explode(',', $result['comp_uids'] ?? '');
于 2022-02-13T04:38:30.080 回答
1

没有必要爆炸 null,你事先知道它不会返回匹配项。如果您真的想要['']结果,那么明确地执行它会更直观:

$comp_uids = $result['comp_uids'] !== null ? explode(',', $result['comp_uids']) : [''];

我仍然觉得这对你的程序员同行来说有点违反直觉。恕我直言,没有找到 UID 的概念最好用一个空数组来表示,如果您也可以期待空字符串,它们很可能与以下内容一起处理null

$comp_uids = $result['comp_uids'] != '' ? explode(',', $result['comp_uids']) : [];
于 2022-02-13T11:57:01.933 回答