在以下功能上,我得到了错误
“发生字符串偏移量强制转换”
protected function setBitAtPosition($pos) {
list($char, $byte) = $this->position2CharAndByte($pos);
// Error Notice : String offset cast occurred in ....
$this->bitField[$char] = $this->bitField[$char] | $byte;
}
protected function getBitAtPosition($pos) {
list($char, $byte) = $this->position2CharAndByte($pos);
// Error Notice : String offset cast occurred in ....
return ($this->bitField[$char] & $byte) === $byte;
}
var_dump($this->position2CharAndByte($pos));
array(2) {
[0] =>
double(9552303)
[1] =>
string(1) "Ç"
}
从PHP 5.4开始,字符串偏移量必须是整数或类似整数的字符串,否则将引发警告。
正确的解决方案是像这样强制转换为整数
$this->bitField[(int)$char] = $this->bitField[(int)$char] | $byte;
return ($this->bitField[(int)$char] & $byte) === $byte;
解决的办法是强制$char
转换为int
;尽管adouble
具有相同的值,但PHP自5.4起就明确希望使用int值。解决的办法是position2CharAndByte
返回aint
而不是a double
,将其强制转换为position2CharAndByte
需要不必要的代码重复的调用者。(*咳嗽*固定*咳嗽*)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句