-1

配列があると思っていたときに、文字列があると主張する致命的なエラーが発生しました。

Fatal error: [] operator not supported for strings in /Applications/MAMP/htdocs/tankards_wordpress/wp-content/themes/tankardsleague/functions.php on line 566

また、次の警告: Warning: in_array() expects parameter 2 to be array, string given in /Applications/MAMP/htdocs/tankards_wordpress/wp-content/themes/tankardsleague/functions.php on line 579

どこかに構文の問題があると思いますか?変数を初期化したと思ったのですが、見逃したのでしょうか? 経験豊富な目で見ていただければ幸いです。

function forum_subscribe_member_player()
{
    global $user_ID;
    $players= get_users();

    foreach($players as $player)
    {
        $user_info = get_userdata($player->ID);
        $playeremail = $user_info->user_email;

        if(!empty($playeremail) && user_can( $player-> ID, 'contributor'))
        {                   
            $list = get_option('mf_forum_subscribers_1', array());


            if( is_player_subscribed($player->ID)) //remove player if already exists (user clicked unsubscribe)
            {
                $key = array_search($playeremail, $list);
                unset($list[$key]);
            }
            else
                $list[] = $playeremail;
            update_option('mf_forum_subscribers_1', $list);
        }
    }       
}

function is_player_subscribed($user_ID)
{
    if($user_ID)
      {
        $useremail = get_userdata($user_ID, 'user_email');

        $list = get_option("mf_forum_subscribers_1", array());
        if(!empty($list) && in_array($useremail, $list))
        {
          return true;
        }
        return false;
      }

}

function call_forum_subscribe_member_player()
{
    forum_subscribe_member_player();
} 

566$list[] = $playeremail;行目は 579 行目ですif(!empty($list) && in_array($useremail, $list))

4

1 に答える 1

0

$list初期値が null/empty/etc (基本的に配列以外の任意の型) であっても、常に配列であることを確認するために、配列に型キャストできます。

$list = (array)get_option('mf_forum_subscribers_1', array());
于 2013-10-06T11:51:10.817 に答える