如何更正此非法字符串偏移?

gab*_*old 26 php wordpress

我在第32行的/home/mysite/public_html/wp-content/themes/evento/lib/php/extra.class.php中收到此错误"警告:非法字符串偏移'类型'

并且我意识到文件中的这段代码是错误的,但是我在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 */
Run Code Online (Sandbox Code Playgroud)

Boa*_*ann 43

if ($inputs['type'] == 'attach') {
Run Code Online (Sandbox Code Playgroud)

代码有效,但它希望函数参数$inputs是一个数组.使用时出现"非法字符串偏移"警告$inputs['type']意味着函数正在传递字符串而不是数组.(然后因为字符串偏移是一个数字,'type'不适合.)

因此理论上问题出在其他地方,代码的调用者没有提供正确的参数.

但是,此警告消息是PHP 5.4的新增功能.如果发生这种情况,旧版本不会发出警告.他们会默默地转换'type'0,然后尝试获取字符串的字符0(第一个字符).因此,如果这段代码应该可行,那是因为滥用这样的字符串不会引起对PHP 5.3及以下版本的任何抱怨.(许多旧的PHP代码在升级后遇到了这个问题.)

您可能要调试为什么功能正在被检查调用代码给出一个字符串,并找出哪些价值具有通过执行var_dump($inputs);中的作用.但是,如果您只是想关闭警告以使其行为类似PHP 5.3,请将行更改为:

if (is_array($inputs) && $inputs['type'] == 'attach') {
Run Code Online (Sandbox Code Playgroud)