在PHP中发生了字符串偏移量强制转换的正确解决方案

勒穆塞尔

在以下功能上,我得到了错误

“发生字符串偏移量强制转换”

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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在PHP中正确的解决方案的字符串偏移量转换

来自分类Dev

转换为缺少的加号偏移量datetime字符串为正确的datetime

来自分类Dev

如何使用UTC偏移量转换字符串

来自分类Dev

PHP-将字符串时区格式转换为偏移量整数

来自分类Dev

PHP非法字符串偏移量错误

来自分类Dev

PHP警告-非法的字符串偏移量

来自分类Dev

警告:字符串偏移量'todo'| 的PHP

来自分类Dev

PHP-数组-非法的字符串偏移量

来自分类Dev

PHP中的非法字符串偏移量错误

来自分类Dev

从const字符串转换的C ++ Need解决方案

来自分类Dev

无法正确使用字符串偏移量作为数组

来自分类Dev

将字符串转换为日期时的Javascript Date()函数和GMT偏移量

来自分类Dev

将具有偏移量的字符串时间戳转换为Java日期

来自分类Dev

Python使用时区偏移量转换日期/时间字符串

来自分类Dev

将时区pytz字符串转换为python / django中的偏移量

来自分类Dev

将时区字符串(即美国/东部)转换为偏移量

来自分类Dev

非法字符串偏移量未定义偏移量:2

来自分类Dev

具有限制/偏移量的Firebase查询可能的解决方案

来自分类Dev

忽略时区偏移量的日期字符串

来自分类Dev

使用可变偏移量分割字符串

来自分类Dev

警告:字符串偏移量非法

来自分类Dev

如何从字符串获取UTC偏移量

来自分类Dev

警告:非法字符串偏移量“ Opencart 2.1”

来自分类Dev

警告:字符串偏移量非法

来自分类Dev

警告:“姓氏”的字符串偏移量非法

来自分类Dev

在字符串中查找元素的偏移量

来自分类Dev

CakePHP非法字符串偏移量

来自分类Dev

Codeigniter中的字符串偏移量非法

来自分类Dev

非法的字符串偏移量'formid'

Related 相关文章

热门标签

归档