非法数组键名

4
这个函数
function convert($size) {
  $unit = array(
    'B',
    'KByte',
    'MByte',
    'GByte',
  );
  return round($size / pow(1024, ($i = floor(log($size, 1024)))), 2) . ' ' . $unit[$i];
}

这个函数能正常工作,但PHPStorm报错:

第54行存在非法的数组键类型。

这意味着$unit[$i]有问题。

这个函数有什么问题吗?


3
首先 - PHPStorm发现floor返回一个浮点数,使用浮点数作为数组键通常是不可取的。请注意,一些其他的函数,比如array_key_exists,实际上会在运行时产生错误(参考链接),如果你仅基于类型将$i传递作为键。 - DCoder
你在哪里定义了 $i - putvande
@putvande ($i = floor(... - lonesomeday
哦,是的..错过了那个。 - putvande
1个回答

5

我现在用 $unit[(int)$i] 修复了它,通知已经消失了。 - Ronny Linsener

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接