PHP Неопределенное смещение Сообщение при использовании функции «список» - PullRequest
0 голосов
/ 11 июля 2019

Я получил эту ошибку на своем веб-сайте сегодня утром, когда нажимаю на пост-объявление

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

if (!function_exists('adforest_extarct_link')) {

    function adforest_extarct_link($string) {
        $arr = explode('|', $string);
        list($url, $title, $target, $rel) = $arr; /* This is line 148 */
        $rel = urldecode(adforest_themeGetExplode($rel, ':', '1'));
        $url = urldecode(adforest_themeGetExplode($url, ':', '1'));
        $title = urldecode(adforest_themeGetExplode($title, ':', '1'));
        $target = urldecode(adforest_themeGetExplode($target, ':', '1'));
        return array("url" => $url, "title" => $title, "target" => $target, "rel" => $rel);
    }

Это сообщение об ошибке

Неопределенное смещение: 3 в /customers/7/6/1/corpersmarket.com/httpd.www/wp-content/themes/adforest/inc/theme_shortcodes/short_codes_functions.PHP на линии 148

На самом деле есть 3 строки ошибки:

Notice: Undefined offset: 1 in /customers/7/6/1/corpersmarket.com/httpd.www/wp-content/themes/adforest/inc/theme_shortcodes/short_codes_functions.php on line 148 
Notice: Undefined offset: 2 in /customers/7/6/1/corpersmarket.com/httpd.www/wp-content/themes/adforest/inc/theme_shortcodes/short_codes_functions.php on line 148 
Notice: Undefined offset: 3 in /customers/7/6/1/corpersmarket.com/httpd.www/wp-content/themes/adforest/inc/theme_shortcodes/short_codes_functions.php on line 148

1 Ответ

0 голосов
/ 11 июля 2019

В общем вопрос является дубликатом PHP неопределенного смещения от списка ()

Однако

Ваш list ожидает по крайней мере 4параметры - но ваш массив $arr имеет только 1. Таким образом, следующие три пусты.(помните, что массивы начинаются с 0).Таким образом, ваш $string не содержит символа |, чтобы функция explode работала как положено.

Обходной путь :

Оригинал:

    $arr = explode('|', $string);
    list($url, $title, $target, $rel) = $arr; /* This is line 148 */

Становится:

    $arr = array_pad(explode('|', $string), 4, null);
    list($url, $title, $target, $rel) = $arr;

Что это делает:

Дополняет массив , чтобы он содержал минимум 4 значения;так что значения list будут всегда заполняться, даже если они все еще могут быть пустыми.

...