PHP注意:字符串偏移转换发生在第251行& 258

时间:2016-06-30 02:06:36

标签: php

我用这个

获得了php通知
$code = "";
while ($id > $length - 1) {
    // determine the value of the next higher character
    // in the short code should be and prepend
    $code = self::$chars[fmod($id, $length)] . $code; //<-- line 251
    // reset $id to remaining value to be converted
    $id = floor($id / $length);
}

// remaining value of $id is less than the length of
// self::$chars
$code = self::$chars[$id] . $code; //<-- line 258

return $code;

NOTICE代码是这一部分:

$code = self::$chars[fmod($id, $length)] . $code; 
$code = self::$chars[$id] . $code; 

如何解决?我找不到它,请大家帮忙.. :)

1 个答案:

答案 0 :(得分:1)

使用intval应该修复它:

..$chars[intval(fmod($id, $length))]..

这是因为fmod返回一个浮点数,并将其转换为整数。见这个例子:

$a = 'abcdef';
$b = $a[1.0];
echo $b;

输出:

  

E_NOTICE:类型8 - 发生字符串偏移转换 - 在第3行
  B'/ P>

<小时/> 如果你考虑它(至少在这种情况下),你可以在1号位置,或者在2号位置。你不能在1,5号位置。因此,当您尝试访问浮点数时,它会自动将值转换为整数,并让您知道它是这样做的。