PHP中的奇怪偏移错误

时间:2013-07-10 20:22:18

标签: php

我收到一个我无法解决的错误。

错误是:

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];
    }
}

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语句后面的整行视为同一行。