【问题标题】:New to programming php, and have seen similar problemsphp编程新手,遇到过类似问题
【发布时间】:2012-01-07 19:37:17
【问题描述】:

所以目前我正在尝试为游戏的统计服务器修复一些旧代码(这肯定是过时的,并且最近已被新版本取代)。很多代码已被弃用,因此正确修复它是一种猜测,但我发现一个完全损坏的部分,我不知道如何修复,它会导致致命错误。

代码如下

for ($i=0; $i<$armyCount; $i++)
{
    $summary['total']['time'] += $armies[0]['time'.$i];
    $summary['total']['win'] += $armies[0]['win'.$i];
    $summary['total']['loss'] += $armies[0]['loss'.$i];
    $summary['total']['score'] += $armies[0]['score'.$i];
    $summary['total']['best'] += $armies[0]['best'.$i];
    $summary['total']['worst'] += $armies[0]['worst'.$i];
    $summary['total']['brnd'] += $armies[0]['brnd'.$i];
}

我得到的错误如下

Notice: Uninitialized string offset: 0 in C:\xampp\htdocs\dontneedthis\playerstats.inc.php on line 136

Fatal error: Cannot use string offset as an array in C:\xampp\htdocs\dontneedthis\playerstats.inc.php on line 136

我看到过类似的问题被问到,并且看到了它们是如何解决的,但我并不完全理解它是如何完成的,所以不太知道如何解决这个问题。任何帮助都会很棒,我完全打算将修复了错误且可以正常工作的代码(无论何时完成)发布给剩余的社区。​​p>

【问题讨论】:

  • 错误消息指的是哪一行? $summary$armies 长什么样子?
  • 此错误消息表明 $armies 的索引 0 未设置。随着你的代码被剪断,只能猜测来源。
  • 应该使用 : for ($i=0; $i

标签: php arrays offset fatal-error initialization


【解决方案1】:

$armies 是一个空字符串,您将其视为任何数组,以不可恢复的方式。

向我们展示$armies 的外观、var_dump($armies); 得到的结果以及分配它的代码,我们将帮助您找出问题所在。

【讨论】:

    【解决方案2】:

    看起来您的 $armies[0]['time'.$i] 被初始化为空字符串而不是数组(可能是 $armies= "")。

    Notice: Uninitialized string offset: 0  
    

    这意味着 php 尝试将您的字符串变量 $armies 作为数组访问。如果字符串非空,那么这将导致从该字符串中获取单个字母。但似乎 $armies 是一个空字符串,因此无法获取索引为 0 的字母。

    Fatal error: Cannot use string offset as an array  
    

    表示上述操作的结果(显示通知)不能作为数组访问。请记住,$armies 是一个字符串,并且该字符串的第一个字母已被访问,此尝试的结果将作为数组访问。

    尝试解决 $armies 变量的填充方式以及填充方式错误的原因。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-29
      • 2017-04-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多