2011-11-28 4 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

이 오류 메시지는 $ armies의 인덱스 0이 설정되지 않았 음을 나타냅니다. 코드를 잘라내서 소스를 추측 할 수만있었습니다. –

+0

'$ armies [ "0"]'... –

답변

1

$ armies [0] [ 'time'. $ i]는 배열이 아닌 빈 문자열로 초기화됩니다 (아마 $ armies = "").

Notice: Uninitialized string offset: 0 

즉 PHP가 문자열 변수 $ armies에 배열로 액세스하려고합니다. 문자열이 비어 있지 않으면 문자열에서 단일 문자를 가져옵니다. 그러나 $ 군대는 빈 문자열이므로 색인 0으로 문자를 가져 오는 것은 불가능합니다.

Fatal error: Cannot use string offset as an array 

이 (통지를 보여) 상기 연산의 결과는 배열로 액세스 할 수 없다는 것을 의미한다. $ armies는 astring이고 문자열의 첫 번째 문자에 액세스했으며이 시도의 결과는 배열로 액세스됩니다.

$ armies 변수가 채워지는 방법과 그 변수가 잘못된 방식으로 채워진 이유를 해결해보십시오.

+0

+1. 내가 말한 것, 오직 더 나은 것. – DaveRandom

0

$armies은 빈 문자열이며 복구 할 수없는 방식으로 모든 배열로 처리하고 있습니다.

$armies을 표시하고 var_dump($armies);을 입력 할 때 얻는 코드와 코드를 할당 한 코드를 표시하면 잘못된 내용을 해결하는 데 도움이됩니다.

관련 문제