#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] : '';
?