ホームページ >バックエンド開発 >PHPチュートリアル >2016 年 1 月 6 日 バグ ライブラリ 2016-06-16

2016 年 1 月 6 日 バグ ライブラリ 2016-06-16

WBOY
WBOYオリジナル
2016-07-28 08:30:081253ブラウズ

1. array_search と unset について

元のコード:

public function appViewUnread($uid, $id)
    {
        $userNewRepyKey = Config_CacheKey::USER_QUESTION_NEW_REPLY.$uid;
        $userNewReply = $this->appGetUserNewReply($uid);
        $key = array_search($id, $userNewReply);
       
        unset($userNewReply[$key]);
        $this->redis->set($userNewRepyKey, serialize($userNewReply));
     }

BUG 分析: array_search が結果を見つけられない場合は false を返し、unset ($userNewReply[false]) は unset($) と同等です。 userNewRrply[0]) の場合、配列の最初の要素が削除されます。

更新されたコード:

public function appViewUnread($uid, $id)
    {
        $userNewRepyKey = Config_CacheKey::USER_QUESTION_NEW_REPLY.$uid;
        $userNewReply = $this->appGetUserNewReply($uid);
        $key = array_search($id, $userNewReply);
        if($key != false)
        {
            unset($userNewReply[$key]);
            $this->redis->set($userNewRepyKey, serialize($userNewReply));
        }

    }
概要: 関数の戻り値が false になる可能性がある状況では、戻り結果を検証する必要があります。

上記は、2016 年 1 月 6 日の内容を含む、2016 年 1 月 6 日のバグ ライブラリ 2016-06-16 を紹介しています。PHP チュートリアルに興味のある友人の参考になれば幸いです。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。