未初始化的字符串偏移量:引用带花括号的单个字符串字符时为-1


Uninitialized string offset: -1 when referencing single string character with curly braces

我有这样的代码:

$len = strlen($string);
if ($string{$len-1} == '-') {
    // Do stuff...
}

然而,我得到以下注意错误:

Uninitialized string offset: -1

当我var_dump($len-1)的值,我得到:

int 3

当我var_dump($string)时,我得到:

string 'bobo' (length=4)

那么谁能告诉我为什么这会导致NOTICE错误?

为防止通知,在if语句中添加附加条件:

$len = strlen($string);
if ($len > 0 && $string{$len-1} == '-')
    // Do stuff...
}

或使用substr功能:

if (substr($string, -1) == '-') {
    // Do stuff...
}
$len = strlen($string);
if(isset($string{$len-1})){
if ($string{$len-1} == '-') {
// Do stuff...
}
}