h.emamie
یک شنبه 12 دی 1389, 13:22 عصر
امروز موقعي كه داشتم روي يك پروژه كار مي كردم ، به يك نكته مهم برخوردم ، و اون نكته در كد زير نهفته است :
if('abc'==0)
{
echo 'True.';
}
else
{
echo 'False.';
}
به نظر شما نتيجه اجراي كد چيست ؟!
True
اولش براي خودم هم گيج كننده بود ، ولي خوب كه فكر كردم ، به ان نتيجه رسيدم كه برروي رشته abc به صورت داخلي تابع intval اجرا مي شود و چون نتيجه آن 0 است ، نتيجه True مي شود .
البته فكر نمي كنم اين باگ باشد و به نظرم بيشتر مربوط به انعطاف پذيري متغيرها در php است ولي در كل براي هر برنامه اي در صورت رعايت نكردن مي تواند يك خطر و يك باگ محسوب شود .
بهترين راه حل در اين موارد استفاده از === به جاي == است .
if('abc'===0)
{
echo 'True.';
}
else
{
echo 'False.';
}
نتيجه :
False
خوشحال مي شوم نطرات بقيه دوستان رو هم بدونم.
if('abc'==0)
{
echo 'True.';
}
else
{
echo 'False.';
}
به نظر شما نتيجه اجراي كد چيست ؟!
True
اولش براي خودم هم گيج كننده بود ، ولي خوب كه فكر كردم ، به ان نتيجه رسيدم كه برروي رشته abc به صورت داخلي تابع intval اجرا مي شود و چون نتيجه آن 0 است ، نتيجه True مي شود .
البته فكر نمي كنم اين باگ باشد و به نظرم بيشتر مربوط به انعطاف پذيري متغيرها در php است ولي در كل براي هر برنامه اي در صورت رعايت نكردن مي تواند يك خطر و يك باگ محسوب شود .
بهترين راه حل در اين موارد استفاده از === به جاي == است .
if('abc'===0)
{
echo 'True.';
}
else
{
echo 'False.';
}
نتيجه :
False
خوشحال مي شوم نطرات بقيه دوستان رو هم بدونم.