2011-11-28 31 views
0

因此,目前我正在嘗試修復一個遊戲統計服務器的舊代碼(這絕對是過時的,並且最近已被新版本取代)。很多代碼都被棄用了,所以這對於修復它是一種猜測,但是我發現了一個完全破壞的部分,我不知道如何修復,並且它導致了一個致命的錯誤。新編程的PHP,並看到類似的問題

的代碼如下

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 

我已經看到了類似的問題問過了,看到他們是如何得到解決,但我不完全理解它是如何完成的,所以不知道如何去解決這個問題。任何協助都會很棒,而且我完全打算髮布這個完整工作的代碼(只要完成這些工作)就可以繼續使用社區。

+0

哪一條是錯誤消息引用的行? '$ summary'和'$ armies'是什麼樣的? –

+3

此錯誤消息表示$軍隊的索引0未設置。隨着你的代碼被剪掉,源代碼只能被猜出。 –

+0

嘗試'$軍隊[「0」]'... –

回答

1

它看起來像你的$ armies [0] ['time'。$ i]被初始化爲空字符串而不是數組(可能是$ armies =「」)。

Notice: Uninitialized string offset: 0 

這意味着PHP試圖訪問您的字符串變量$軍隊作爲一個數組。如果字符串非空,那麼這將導致從該字符串獲得單個字母。但是看起來$軍隊是一個空字符串,所以得到索引爲0的字母是不可能的。

Fatal error: Cannot use string offset as an array 

表示上述操作的結果(顯示通知)不能作爲數組訪問。請記住,$ armies是一個astring,並且該字符串的第一個字母被訪問,並且此嘗試的結果將作爲一個數組訪問。

試着解決$ armies變量是如何填充的以及爲什麼填充錯誤的方法。

+0

+1。我說的只有更好。 – DaveRandom

0

$armies是一個空字符串,並且您將它視爲任何數組,以不可恢復的方式處理。

向我們展示$armies應該是什麼樣的,當你var_dump($armies);和你分配的代碼時,你會得到什麼,我們會幫你找出問題所在。