尝试访问 PHP 7.4 中 bool 类型值的数组偏移量
Trying to access array offset on value of type bool in PHP 7.4
我刚刚将服务器的 PHP 版本升级到 PHP 7.4.1,现在出现此错误:
Notice: Trying to access array offset on value of type bool in
public static function read($id)
{
$Row = MySQL::query("SELECT `Data` FROM `cb_sessions` WHERE `SessionID` = '$id'", TRUE);
# http://php.net/manual/en/function.session-start.php#120589
//check to see if $session_data is null before returning (CRITICAL)
if(is_null($Row['Data']))
{
$session_data = '';
}
else
{
$session_data = $Row['Data'];
}
return $session_data;
}
PHP 7.4 的修复是什么?
如果你的查询没有return一行,那么你的变量$Row将被填充为false,
所以你可以在尝试访问其中的任何索引之前测试变量是否有值:
if($Row){
if(is_null($Row['Data']))
{
$session_data = '';
}...
轻松 PHP ??
null coalescing operator
return $Row['Data'] ?? 'default value';
或者你可以这样使用
$Row['Data'] ??= 'default value';
return $Row['Data'];
我刚刚将服务器的 PHP 版本升级到 PHP 7.4.1,现在出现此错误:
Notice: Trying to access array offset on value of type bool in
public static function read($id)
{
$Row = MySQL::query("SELECT `Data` FROM `cb_sessions` WHERE `SessionID` = '$id'", TRUE);
# http://php.net/manual/en/function.session-start.php#120589
//check to see if $session_data is null before returning (CRITICAL)
if(is_null($Row['Data']))
{
$session_data = '';
}
else
{
$session_data = $Row['Data'];
}
return $session_data;
}
PHP 7.4 的修复是什么?
如果你的查询没有return一行,那么你的变量$Row将被填充为false, 所以你可以在尝试访问其中的任何索引之前测试变量是否有值:
if($Row){
if(is_null($Row['Data']))
{
$session_data = '';
}...
轻松 PHP ??
null coalescing operator
return $Row['Data'] ?? 'default value';
或者你可以这样使用
$Row['Data'] ??= 'default value';
return $Row['Data'];