Intereting Posts
Различные типы пользователей, перенаправленные на одну страницу (index.php) с различным контентом mysql select query в сериализованном массиве Пытается вызвать диммер / пульсацию перед / во время Ajax Использование переменных статического класса – в heredoc PHP: Catchable fatal error: Объект класса stdClass не может быть преобразован в строку Завершение работы с php – предоставление разрешения apache Интеграция Magento и Moodle Структурирование SQL-запроса на основе нескольких флажков PHP Расширение класса заставляет детей наследовать одно и то же статическое свойство PDO связывает неизвестное количество параметров? PHP конвертирует 2-значный год в 4-значный год Отображение значения из базы данных в динамически созданное текстовое поле в таблице с помощью jQuery Загрузка изображения Silverstripe меняет название Формат JSON для столбца в столбце Google перейдите на следующую страницу

Как исправить это незаконное смещение строк?

Я получаю эту ошибку «Предупреждение: недопустимое смещение строки» в /home/mysite/public_html/wp-content/themes/evento/lib/php/extra.class.php в строке 32 "

и я понял, что этот раздел кода в файле неверен, однако я еще не настолько хорош в PHP, но мне интересно, может ли кто-нибудь помочь мне переписать этот раздел, чтобы устранить ошибку. Благодаря! (ошибка начинается в строке 32, которая является началом инструкции if ниже)

Вот код:

/* new version */ function get_attachment_struct( $inputs ){ $attach = array(); if( $inputs['type'] == 'attach' ){ $name = $inputs['name']; $attach = array( 0 => array( 'name' => $name, 'type' => 'text', 'label' => 'Attachment URL', 'lvisible' => false, 'upload' => true, ), 1 => array( 'name' => $name .'_id', 'type' => 'hidden', 'upload' => true ), ); if( isset( $inputs[ 'classes' ] ) ){ $attach[0]['classes'] = $inputs[ 'classes' ]; $attach[1]['classes'] = $inputs[ 'classes' ] . '_id'; } } return $attach; } /* new version */ 

Related of "Как исправить это незаконное смещение строк?"

 if ($inputs['type'] == 'attach') { 

Код действителен, но он ожидает, что параметр параметра $inputs будет массивом. Предупреждение «Недопустимое смещение строки» при использовании $inputs['type'] означает, что функции передается строка вместо массива. (И тогда, поскольку строковое смещение является числом, 'type' не подходит.)

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

Однако это предупреждение является новым для PHP 5.4. Старые версии не предупреждали, если это произошло. Они молча преобразуют 'type' в 0 , затем попытаются получить символ 0 (первый символ) строки. Поэтому, если этот код должен был работать, это потому, что злоупотребление такой строкой не вызывало никаких жалоб на PHP 5.3 и ниже. (Много старых PHP-кода столкнулись с этой проблемой после обновления.)

Возможно, вам захочется отладить, почему функция получает строку, проверяя код вызова и var_dump($inputs); , какое значение она имеет, делая var_dump($inputs); в функции. Но если вы просто хотите закрыть предупреждение, чтобы заставить его вести себя как PHP 5.3, измените строку на:

 if (is_array($inputs) && $inputs['type'] == 'attach') { 
 if(isset($rule["type"]) && ($rule["type"] == "radio") || ($rule["type"] == "checkbox") ) { if(!isset($data[$field])) $data[$field]=""; } 

Я получаю ту же ошибку в WP, когда я использую php ver 7.1.6 – просто верните версию php на 7.0.20, и ошибка исчезнет.