PHP 5登录“语法错误,意外'?' “而使用??运营商

问题描述:

此代码是登录表单的一部分,我想确保该字段不是空白。当我使用这行代码,我得到以下错误:PHP 5登录“语法错误,意外'?' “而使用??运营商

syntax error, unexpected '?'

if(is_blank($admin['username'])) { 
     $errors[] = "Username cannot be blank."; 
    } elseif (!has_length($admin['username'], array('min' => 8, 'max' => 255))) { 
     $errors[] = "Username must be between 8 and 255 characters."; 
    } elseif (!has_unique_username($admin['username'], $admin['id'] ?? 0)) { 
     $errors[] = "Username not allowed. Try another."; 
    } 

我知道,我得到的错误,因为我用PHP 5.5的工作。

谢谢!

+0

有人知道如何解决这个问题吗? –

是的,你需要使用下面的语句:

(isset($admin['id']) ? $admin['id'] : 0) 

由于PHP 5.5没有??null coalesce operator(PHP 7或更高版本),你需要做的老式的手短。

请不要将它放在方括号之间,以便它在 if或else语句和/或函数内不会失败。

你也可以使用

$admin['id'] ?: 0; 

但是,这将给予通知时,未设置$admin['id']