PHP str_replace():不推荐将 null 传递给数组|字符串类型的参数 #3 ($subject)

PHP str_replace(): Passing null to parameter #3 ($subject) of type array|string is deprecated

亲爱的,我在 运行 我的应用程序中遇到此错误。

下面我附上了显示错误的代码的图像文件

{"data":[
    ["omron","<span class=\"label label-success\">Active<\/span>",
    "<button type=\"button\" class=\"btn btn-default\" onclick=\"editBrand(4)\" data-toggle=\"modal\" data-target=\"#editBrandModal\"><i class=\"fa fa-pencil\"><\/i><\/button> <button type=\"button\" class=\"btn btn-default\" onclick=\"removeBrand(4)\" data-toggle=\"modal\" data-target=\"#removeBrandModal\"><i class=\"fa fa-trash\"><\/i><\/button>\n\t\t\t\t"]
    ]
}
<div style="border:1px solid #990000;padding-left:20px;margin:0 0 10px 0;">

<h4>A PHP Error was encountered</h4>

<p>Severity: 8192</p>
<p>Message:  str_replace(): Passing null to parameter #3 ($subject) of type array|string is deprecated</p>
<p>Filename: core/Output.php</p>
<p>Line Number: 457</p>


    <p>Backtrace:</p>

更新:代码

if ($this->parse_exec_vars === TRUE) 
{ 
    $memory = round(memory_get_usage() / 1024 / 1024, 2).'MB'; 
    // below is line 457
    $output = str_replace(array('{elapsed_time}', '{memory_usage}'), array($elapsed, $memory), $output); 
}

我遇到过这样的错误

这是消除错误的唯一方法。你 PHP 7 & 8 安装你的系统

php 安装在 c/:xampp & c/:xampp2 安装。 因为 difrant drive in error occuerd

在其他项目中受益

Multiple xampp installations windows

我已将 CI 版本降级到 3,PHP 版本降级到 7.3

现在可以使用了

如果您没有加载任何视图,就会显示此错误消息。 Codeigniter 的内部输出缓冲区从未初始化,因此为 null。输出缓冲区是 str_replace() 的第三个参数。可能有其他方式触发此错误消息。

您可能想在某个时候加载有效视图。

PHP 7 及更低版本只会忽略缺少的参数,而 PHP 8+ 会显示警告。它也可能因您的环境/调试设置而异。

使用三元运算符。

在 Codeigniter 之前现有代码:

$output = str_replace(array('{elapsed_time}', '{memory_usage}'), array($elapsed, $memory), $output);

希望它能正常工作。

使用三元运算符后:

$output = $output ? str_replace(array('{elapsed_time}', '{memory_usage}'), array($elapsed, $memory), $output): "";

另一种选择是检查现有 if 语句中的 $output。这将跳过 $output 为 NULL 或空时不需要的整个代码块。

if ($this->parse_exec_vars === TRUE && !empty($output)) 
{ 
    $memory = round(memory_get_usage() / 1024 / 1024, 2).'MB'; 
    // below is line 457
    $output = str_replace(array('{elapsed_time}', '{memory_usage}'), array($elapsed, $memory), $output); 
}