سؤال

وأنا أكتب وظيفة بسيطة ولسبب ما (ربما بسيطة واحدة) انها لا تعمل بالنسبة لي وأنا أتساءل عما اذا كان يا رفاق يمكن مساعدتي.

function check_value($postID) 
    {
        $ID = $postID;
        $cookie = $_COOKIE['list_of_IDS'];
        $position = strpos($cookie,$ID);
        echo 'ID:'.$ID.'-Cookie:'.$cookie;
            if ($position !== false)
        {
            echo "ID is in the cookie";
        }
    }

في محاولة لمعرفة ما هي المشكلة وأنا وضعت هذا الخط صدى فوق بيان إذا كان هناك للتأكد من هناك هو في الواقع الاشياء في المتغيرات.

ومشكلتي هي أن البيان IF أبدا تطبع.

وA $postID هو 123123 عدد.

وسلسلة $cookie عادة شيء من هذا القبيل 123123.23422.234234.2342342.234234

وشكرا لمساعدتكم!

هل كانت مفيدة؟

المحلول

سوف

وStrpos لا تعمل مع عدد صحيح، لذلك تحتاج إلى يلقي ID إلى سلسلة. جرب هذا:

$ID = (string)$postID;

نصائح أخرى

لاحظ أنه إذا سلسلة الكعكة الخاصة بك تبدو 123123.23422.234234.2342342.234234 وكنت تبحث عن هوية، مثلا، 1231 أو 23، الدالة سيعود TRUE بينما في الواقع أن ID غير موجود في القائمة. وتنفيذ الحالي من strpos() أيضا تتطابق أرقام جزئية.

وهنا هو الحل بسيطة من شأنها أن تتطلب ID أن يكون محاطا النقاط.

$position = strpos('.'.$cookie.'.', '.'.$ID.'.');

ونعم كما قال بروك Strpos لن تعمل مع عدد صحيح لذلك عليك أن يلقي الهوية. لذلك تحتاج بعض التغيير في التعليمات البرمجية.

function check_value($postID) 
    {
        $ID = $postID;
        $cookie = $_COOKIE['list_of_IDS'];
        $position = strpos($cookie,$ID);
        echo 'ID:'.$ID.'-Cookie:'.$cookie;
            if ($position !== false)
        {
                echo "ID is in the cookie";
        }
    }
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top