Новичок в программировании php, и видел подобные проблемы - PullRequest
0 голосов
/ 28 ноября 2011

Так что в настоящее время я пытаюсь исправить старый код для сервера статистики для игры (который определенно устарел и недавно был заменен новой версией).Большая часть кода устарела, так что это своего рода догадки по правильному ее исправлению, но я нашел полностью сломанный раздел, который я не знаю, как исправить, и он вызывает фатальную ошибку.

Код

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

Я видел похожие вопросы и видел, как они решались, но я не совсем понимаю, какэто было сделано, так что я не знаю, как это исправить.Любая помощь будет потрясающей, и я полностью намерен выпустить исправленный и полностью рабочий код (когда я это сделаю) сообществу, которое остается.

Ответы [ 2 ]

1 голос
/ 28 ноября 2011

Похоже, что ваши $ 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 заполняется и почему она заполняется неправильноспособ.

0 голосов
/ 28 ноября 2011

$armies - пустая строка, и вы обрабатываете ее как любой массив без возможности восстановления.

Покажите нам, как должен выглядеть $armies, что вы получите, когда вы var_dump($armies);, и код, из которого вы его присвоили, и мы поможем вам разобраться, что пошло не так.

...