未定义的偏移量并试图获取非对象的属性

时间:2019-05-02 01:51:57

标签: php

我在2003年学习了php,但并没有真正适应变化。我在2014年为我构建了以下函数。我刚刚更新到php 7.3,并收到了这些通知(尽管一切正常)。请帮助我解决需要更改离子顺序以符合7.3的要求,并且没有这些声明。

功能如下:

add_filter( 'wp_nav_menu_objects', 'church_nav_menu_objects_filter',10,2);
function church_nav_menu_objects_filter( $items, $args ) {
    if (( isset($_SESSION["church"])) && (!empty($_SESSION['church']))) {
    //print "<pre>items:<br>\n";
    //var_dump( $items );
    //print "</pre><br>\n";
        if ( is_array( $items ) ) {
            for( $i=0 ; $i < count($items) ; $i++ ) {
                if (( strpos($items[$i]->url,"thetrinitymission.org" )) && ( ! strpos($items[$i]->url,$_SESSION["church"]) ) ) $items[$i]->url=str_replace("thetrinitymission.org",$_SESSION["church"].".thetrinitymission.org",$items[$i]->url);
        }
    }
  }

return( $items );
}

我收到以下错误: 注意:第360行的/thetrinitymission.org/wp-content/themes/twentynineteenkid/functions.php中的未定义偏移量为0

注意:尝试在第360行的/thetrinitymission.org/wp-content/themes/twentynineteenkid/functions.php中获取非对象的属性“ url”

第360行是开始的行:if((strpos($ items [$ i]-> url,

1 个答案:

答案 0 :(得分:0)

$items显然是带有字符串索引的关联数组,但没有数字索引。将循环更改为使用foreach而不是for

foreach ($items as $item) {
    if (( strpos($item->url,"thetrinitymission.org" )) && ( ! strpos($item->url,$_SESSION["church"]) ) ) {
        $item->url=str_replace("thetrinitymission.org",$_SESSION["church"].".thetrinitymission.org",$item->url);
    }
}