уведомление о попытке получить доступ к смещению массива при значении плагинов WordPress типа null

#php #wordpress #plugins #notice #php-7.4

#php #wordpress #Плагины #УВЕДОМЛЕНИЕ #php-7.4

Вопрос:

я должен обновить свой веб-сайт до последней версии php 7.4, после чего я нахожу это уведомление в некоторых плагинах

**> Уведомление: попытка получить доступ к смещению массива при значении типа null в

C:projetshtdocsmapsportwp-contentpluginsekit-megamenulibraryscssscss.inc.php в строке 1753**

 protected function sortArgs($prototype, $args) {
    $keyArgs = array();
    $posArgs = array();

    foreach ($args as $arg) {
        list($key, $value) = $arg;
        $key = $key[1]; // line 1753
        if (empty($key)) {
            $posArgs[] = $value;
        } else {
            $keyArgs[$key] = $value;
        }
    }

    if (!isset($prototype)) return $posArgs;

    $finalArgs = array();
    foreach ($prototype as $i => $names) {
        if (isset($posArgs[$i])) {
            $finalArgs[] = $posArgs[$i];
            continue;
        }

        $set = false;
        foreach ((array)$names as $name) {
            if (isset($keyArgs[$name])) {
                $finalArgs[] = $keyArgs[$name];
                $set = true;
                break;
            }
        }

        if (!$set) {
            $finalArgs[] = null;
        }
    }

    return $finalArgs;
}
  

как я могу изменить код без изменения моей версии php?

результат после добавления var_dump($args); перед foreach, предложенным @Ro Achterberg

array(2) {[0]=> array(3) { [0]=> NULL [1]=> array(2) { [0]=> string(3) «var» [1]=> string(23) «ekit-menu-простой__белый » } [2]=> bool(false) } [1]=> array(3) { [0]=> NULL [1]=> array(3) { [0]=> string(6) «число» [1] => string(3)»6.5″ [2] => строка(1) «%» } [2]=> bool(ложь) } }

Комментарии:

1. Для отладки это поможет узнать фактическое значение $args . Хотя часть синтаксиса в этом коде устарела, он все равно должен работать в версии 7.4. Проблема, вероятно, существует где-то в вызываемой функции или перед sortArgs() ней . Пожалуйста, сделайте var_dump($args); перед foreach и обновите свой ответ, чтобы показать нам его результат.

2. Ro achterberg u обновите вопрос после отладки ошибки

3. Похоже, вы не передаете структуру массива sortArgs() , которую он ожидает. Глядя на таблицу совместимости плагинов , предполагая, что я нашел тот, который вы используете, он протестирован до версии PHP 5.5.3. Я бы посоветовал вам сначала обратиться за помощью к их форуму поддержки, поскольку это, похоже, частная проблема.

Ответ №1:

В строке 1752 значение $key равно NULL . Он не получает никакого значения. Так что, пожалуйста, попробуйте $key = isset( $key[1] ) ? $key[1] : ''; ?