Получение & quot; 8: Неопределенное смещение: 1 & quot; ошибка при переустановке мод форума

Чтобы пометить это как дублирующий вопрос, пожалуйста, поймите, что у меня есть нуль опыт работы с кодированием / синтаксисом PHP, и я изо всех сил пытаюсь найти общий ответ на мою конкретную проблему. Я думаю, что я выяснил, откуда возникла проблема, но я даже не на 100% об этом, поэтому я ищу помощь кого-то, кто может помочь мне наверняка разобраться в этом.

Мы устанавливаем мод для игры в кости на форуме Simple Machines. Первая установка прошла без проблем. Мы хотели изменить форматирование мода, поэтому удалили его, изменили файлы и переустановили. После переустановки, публикации новых тем или ответов на вопросы вы получите Когда мы отключили мод, мы могли отвечать и публиковать новые темы как обычно.

После некоторой охоты мы нашли это в нашем журнале ошибок;

http://irate-pirate.org/forums/index.php?action=admin;area=packages;get;sa=browse;server=1;relative=posting
8: Undefined offset: 1
File: /home4/iratepir/public_html/forums/Sources/Subs-Package.php
Line: 1503

Мы нашли файл Subs-Package.php, и вот окружающий код:

1501      // Build an array of parts.
1502        $versions[$id] = array(
1503             'major' => (int) $parts[1],
1504             'minor' => !empty($parts[2]) ? (int) $parts[2] : 0,
1505             'patch' => !empty($parts[3]) ? (int) $parts[3] : 0,
1506             'type' => empty($parts[4]) ? 'stable' : $parts[4],
1507             'type_major' => !empty($parts[6]) ? (int) $parts[5] : 0,
1508             'type_minor' => !empty($parts[6]) ? (int) $parts[6] : 0,
1509             'dev' => !empty($parts[7]),
1510        );
1511   }

Итак, посмотрев на эта почта, Я думаю (???) нужно добавить:

//isset()
$value = isset($array['my_index']) ? $array['my_index'] : '';
//array_key_exists()
$value = array_key_exists('my_index', $array) ? $array['my_index'] : '';

к коду, который я нашел в файле Subs-Package.php. Я предполагаю, что я добавляю это до строки, в которой была найдена ошибка.

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

Любая помощь была бы просто фантастической, и я надеюсь, что предоставил достаточно информации!

0

Решение

Вы должны проверить, если $parts индексы массива установлены или нет. Может случиться так, что массив $parts не существует Итак, вам нужно добавить isset обрабатывать такие случаи.

Например,

1501      // Build an array of parts.
1502        $versions[$id] = array(
1503             'major' => isset($parts[1]) ?(int) $parts[1] : 0,
1504             'minor' => isset($parts[2]) ?(int) $parts[2] : 0,
1505             'patch' => isset($parts[3]) ?(int) $parts[3] : 0,
1506             'type' => isset($parts[4]) ?(int) $parts[4] : 0,
1507             'type_major' => isset($parts[5]) ?(int) $parts[5] : 0,
1508             'type_minor' => isset($parts[6]) ?(int) $parts[6] : 0,
1509             'dev' => isset($parts[7]) ?(int) $parts[7] : 0,
1510        );
1511   }isset() will check if the referenced value is defined or not.
empty($parts[index]) can give error in cases where array $parts is not defined
as it will try to check the value that doesn't exists.

Этот код будет работать, даже если $parts массив не определен.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]