为什么有时会出现“未定义的偏移量8”?

JVE*_*999 1 php

我有一些偶尔返回的代码和“ Undefined Offset 8”。

我进行了搜索,但找不到“未定义的偏移量”定义,这使其更加神秘。

这是代码:

while($lowest_plays !== $plays[$x]){
    $x = rand(0,count($plays));
}
Run Code Online (Sandbox Code Playgroud)

偏移发生在while循环上,这似乎是通常发生此特定偏移的地方。$ lowest_plays和$ plays变量始终是正常的,当“未定义的偏移”发生时,我看不到任何模式。

变量$x0和之间的随机数$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)

And*_*y G 5

数组的索引为零,因此数组项为$ plays [0] ..直至$ plays [7]。count是8-元素总数。所以你需要

$x = rand(0,count($plays) - 1);
Run Code Online (Sandbox Code Playgroud)

否则,在某些情况下,您将尝试读取$plays[8]不存在的内容。