我有一些偶尔返回的代码和“ Undefined Offset 8”。
我进行了搜索,但找不到“未定义的偏移量”定义,这使其更加神秘。
这是代码:
while($lowest_plays !== $plays[$x]){
$x = rand(0,count($plays));
}
Run Code Online (Sandbox Code Playgroud)
偏移发生在while循环上,这似乎是通常发生此特定偏移的地方。$ lowest_plays和$ plays变量始终是正常的,当“未定义的偏移”发生时,我看不到任何模式。
变量$x是0和之间的随机数$plays-1。
这是“未定义的偏移量8”通知之一的值:
Plays: Array ( [0] => 147 [1] => 147 [2] => 146 [3] => 147 [4] => 147 [5] => 146 [6] => 147 [7] => 146 )
Lowest Plays: 146
Random variable ($): 1
Run Code Online (Sandbox Code Playgroud)
数组的索引为零,因此数组项为$ plays [0] ..直至$ plays [7]。count是8-元素总数。所以你需要
$x = rand(0,count($plays) - 1);
Run Code Online (Sandbox Code Playgroud)
否则,在某些情况下,您将尝试读取$plays[8]不存在的内容。