سؤال
وأنا أكتب وظيفة بسيطة ولسبب ما (ربما بسيطة واحدة) انها لا تعمل بالنسبة لي وأنا أتساءل عما اذا كان يا رفاق يمكن مساعدتي.
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";
}
}