我收到一个我无法解决的错误。
错误是:
Uninitialized string offset: 1
代码是:
if($play_count_within_45_minutes[1] > $play_history_old_over_45_minutes_ago[$i][1]){...}
错误发生在$play_count_within_45_minutes[1]
变量上,因为当我将索引更改为0
时(如$play_count_within_45_minutes[0]
中所述),它可以正常工作。
我让它显示了它的值,并且输出正常,使用以下代码:
print_r($play_count_within_45_minutes[1]);
输出结果为:
1.0E+80
原始变量声明是:
$play_count_within_45_minutes = [0, 100000000000000000000000000000000000000000000000000000000000000000000000000000000];
我不认为数字太大,因为我尝试更改它1
并且我得到了同样的错误。
我发现它与这个循环有关(print_r()
在我测试的时候就在那里,并且它给出了同样的错误):
for($i=0; $i <= (count($play_history_old_over_45_minutes_ago)-1); $i++ ){
echo "<br>";
print_r($play_count_within_45_minutes[1]);
echo "<br>";
if($play_count_within_45_minutes[1] > $play_history_old_over_45_minutes_ago[$i][1]){
$play_count_within_45_minutes = $play_history_old_over_45_minutes_ago[$i][1];
}
}
答案 0 :(得分:0)
好吧,我找到了我无法理解的原因。
我对PHP错误的了解是,它将原始if
语句之后的所有内容视为同一行,因此即使错误在第105行,它仍然告诉我它在104上
但是,我仍然不知道为什么将原始$play_count_within_45_minutes[1]
更改为$play_count_within_45_minutes[0]
可以解决问题。尽管如此,这仍然会有问题。
固定代码是:
for($i=0; $i <= (count($play_history_old_over_45_minutes_ago)-1); $i++ ){
echo "<br>";
print_r($play_count_within_45_minutes[1]);
echo "<br>";
if($play_count_within_45_minutes[1] > $play_history_old_over_45_minutes_ago[$i][1]){
$play_count_within_45_minutes[1] = $play_history_old_over_45_minutes_ago[$i][1];
}
}
这似乎是一个愚蠢的错误,但我真的不知道PHP将if
语句后面的整行视为同一行。