更多>>PHP程序设计 Blog

PHP8项目,在获取excel导入来的数据时报出如下错误:[error] [8192]trim(): Passing null to parameter #1 ($string) of type string is deprecated

在ThinkPHP8框架,PHP8版本的项目中,获取excel数据时报出如下错误:[error] [8192]trim(): Passing null to parameter #1 ($string) of type string is deprecated 的解决方法。

使用场景:在excel文件中,手机号对应的单元格为空,而在PHP代码中,获取手机号时用到的是:

$add['demo_mobile'] = trim($list_data[$m][2]);


错误如下:

[error] [8192]trim(): Passing null to parameter #1 ($string) of type string is deprecated


这个错误提示表明在调用 trim() 函数时,传入了一个 null 值,而在 PHP8 中,传递 null 给期望字符串类型的参数已经被标记为不推荐(deprecated)。这种情况通常发生在尝试处理来自外部源的数据时(如从Excel文件中读取数据),其中某些字段可能为空。


在这种情况下,你可以采取以下方法来解决这个问题。

检查并过滤输入数据:在将数据传递给 trim() 之前,先检查是否为 null 或者空值。例如:

$demo_mobile = $list_data[$m][2]; // 手机号
$add['demo_mobile'] = ($demo_mobile !== null && $demo_mobile !== '') ? trim($demo_mobile) : '';

通过上述方法,可以避免直接将 null 值传递给 trim() 函数,从而解决遇到的问题。


在上述场景的解决方案中,既用到了 null,也用到 '',这是因为在上述场景中,判断 null 和空字符串 '' 是必要的,原因如下:


1、null 和空字符串 '' 的区别:

(1)null 在 PHP 中表示一个变量没有值,通常用于表示缺失的数据或未初始化的变量。

(2)空字符串 '' 则是一个有效的字符串值,只是它不包含任何字符。在数据处理过程中,你可能会遇到单元格内容为空的情况,这种情况下获取到的就是空字符串而不是 null。


2、Excel 数据读取特性:

(1)当从 Excel 文件中读取数据时,如果某个单元格是完全空白的,根据使用的库不同,返回的结果可能是 null 或者空字符串 ''。某些库可能将空白单元格视为 null,而另一些则可能将其视为空字符串。

(2)例如,使用 PHPExcel 或 PhpSpreadsheet 库时,空白单元格可能会被解析为 null 或空字符串,具体取决于库的实现和配置。


这样可以确保无论单元格是否为空或者是否存在 null 值,都能正确处理,并且避免了不必要的函数调用和潜在的警告信息。


评论列表

暂时没有相关记录

发表评论

用来接收审核回复提醒,请认真填写

  换一张?
captcha
看不清?点击图片换一张