我正在创建一个简单的 .php 脚本
- 生成一个带有随机数的数组(比如说 1000 个整数)
- 输出图像,其中显示所有这些数字的排列,范围从 0 到绘制的最大数字
输出是一个图像(具有给定的宽度),这就是我得到的:
如您所见,在某些时候,条形更高。这是因为图像通常不够宽,无法呈现所有数字,所以如果一个像素上有更多数字,则条形图会更高。
问题:有时这个脚本运行良好,但偶尔我会收到很多通知错误:
注意:未定义的偏移量:第61行 /.../index.php 中的398
注意:未定义的偏移量:第61行 /.../index.php 中的125
注意:未定义的偏移量:第61行 /.../index.php 中的192 ...
脚本如下,一些解释:
- 第 61 行标记为红色(下)
- 函数 toScale() 返回 intval( number / maxNumber * scaleWidth )
- inb4 $counts[num]=0 不必要的双重声明,这就是我试图解决问题所做的,它似乎没有改变任何东西
- $counts不在这两个部分之间的任何其他地方使用
- 通知错误的数量永远不会等于总数,它要么是少数,要么都不是。
更新:正如Barmar提到的,我的代码中的第二个循环可以替换为
$max = max($data); $counts = array_count_values(array_map('toScale', $data));
它看起来只是代码简化,但这以某种方式解决了问题。为什么?