尝试访问 PHP 7.4 中 bool 类型值的数组偏移量

anj*_*esh 28 php php-7.4

我刚刚将服务器的 PHP 版本升级到 PHP 7.4.1,现在出现此错误:

注意:尝试访问 bool 类型值的数组偏移量

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;
}
Run Code Online (Sandbox Code Playgroud)

PHP 7.4 的修复程序是什么?

dıl*_*ücü 42

使用 PHP ??空合并运算符即可轻松实现

return $Row['Data'] ?? 'default value';
Run Code Online (Sandbox Code Playgroud)

或者你可以这样使用

$Row['Data'] ??= 'default value';
return $Row['Data'];
Run Code Online (Sandbox Code Playgroud)

  • 对于 PHP 版本 < 7,您还可以使用三元语句: `$Row['data'] = isset($Row['data']) ? $Row['data'] : '默认';` (2认同)

小智 7

如果您的查询不返回行,那么您的变量 $Row 将填充 false,因此您可以在尝试访问其中的任何索引之前测试该变量是否有值:

if($Row){
  if(is_null($Row['Data']))
  {
      $session_data = '';
  }...
Run Code Online (Sandbox Code Playgroud)