【问题标题】:Strange offset error in PHP [duplicate]PHP中的奇怪偏移错误[重复]
【发布时间】:2013-07-10 20:22:18
【问题描述】:

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

错误是:

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

【问题讨论】:

  • 你的 PHP 版本是多少? $var = []; 声明数组直到 v5.4 php.net/manual/en/language.types.array.php As of PHP 5.4 you can also use the short array syntax, which replaces array() with [].
  • 你能发布 sizeof($play_count_within_45_minutes) 的输出吗?
  • 看看this answer
  • @Sean 这是很好的信息。我在手册中注意到了这一点。我确实通过在值上运行 print_r 来检查它以确保它可以读取。

标签: php


【解决方案1】:

好的,我找到了我无法弄清楚的原因。

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

【讨论】:

  • 好你发现了。自己解决问题会让你更好地记住它(至少我有过几次类似的情况)。
  • 当然。这是我的第一个超级复杂的逻辑 PHP 程序。到目前为止,我学到了很多东西。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-23
  • 1970-01-01
  • 2013-06-25
  • 1970-01-01
  • 1970-01-01
  • 2016-06-08
相关资源
最近更新 更多