اثبات True=false !!!!

NabiKAZ

Well-Known Member
سلام

به این کدهای PHP یه نگاهی بندازید:
کد:
if ("salam") echo "ok" ; //true
if (0) echo "ok" ; //false
if ("salam" == 0) echo "ok" ; //true

از اینها نمیشه نتیجه گرفت که true=false ?!!!

یا اینیکی رو ببینید:
کد:
if ("salam" == 0) echo "ok" ; //true
if ("salam" and 0) echo "ok" ; //false
چطور ممکنه دو عبارتی که با هم برابر هستند هر دو همزمان صحیح نباشند !!!

کمی عجیب نیست ؟! به نظر شما داستان از کجا آب میخوره ؟!
آیا آقای راسموس اشتباه کرده ؟!!!! :D


تشکر
نبی
 

tabib_m

Member
من دیروز رو این حرفی که زدی فکر کردم و ذهنم متوجه این مسئله شد

در مقایسه ی بین عدد و رشته ، رشته معادل صفر محسوب میشه
مثلا :
کد:
3>"salam"     => true
-2<"salam"      =>true
2<"salam"    =>false

and 

0=="salam"    => true
مطمئنا همون طور که خودت میدونی 0 دقیقا برابر با false و "salam" دقیقا برابر با true نیست که بخوای اینجوری مقایسه کنی.
در حقیقت php در شرط ها میات یک سری عملیات انجام میده . از قبیل این که اگر نتیجه ی شرط (!) یک عدد صفر باشه ، اون رو معادل false فرض میکنه و در غیر این صورت true. و یا اگر نتیجه ی شرط (!) یک رشته ی خالی باشه اون رو false و در غیر این صورت اون رو true فرض میکنه!
خوب حالا مسئله ای که اینجاس:
کد:
if(0) ...
چیزی که داره به عنوان نتیجه ی شرط قرار میگیره یک عدد هست!!! نه یک عبارت بولین!
و
کد:
if("salam") ...
چیزی که داره به عنوان نتیجه ی شرط قرار میگیره یک رشته هست!!! نه یک عبارت بولین!

بنابراین اینجا دیگه وظیفه ی php اینه که بیات نتیجه ی شرط رو یا true و یا false در نظر بگیره که این کار رو هم بر اساس یک سری قواعدی که مثال زدم انجام میده!

حالا این یکی مثال:
کد:
if(0=="salam") ...
در اینجا دیگه ما مقایسه ی false با true نمیکنیم که انتظار نتیجه ی false داشته باشیم!! بلکه ما داریم یک رشته رو با یک عدد مقایسه میکنیم و از اونجایی که رشته ها در مقایسه ی عددی برابر با 0 محسوب میشن در نتیجه ، نتیجه ی شرط برابر با true خواهد بود!
و در:
کد:
if(0 and "salam") ...
ما دیگه دو تا شرط داریم! و دیگه مقایسه ای در کار نیست.
بنابراین از اونجایی که نتیجه ی 0 ، false هست و نتیجه ی "salam" برابر با true ، نتیجه ی نهایی برابر با false خواهد بود!

امیدوارم منظورم رو رسونده باشم

موفق باشید.
 
آخرین ویرایش:

tabib_m

Member
ببخشید ، لینکهایی که گذاشتی رو دیر خوندم. شرمنده
ولی در هر صورت ، بد نبود اینجا هم مطرح میشد
 

NabiKAZ

Well-Known Member
ممنون محسن جان
توضیحات خوبی بود زحمت کشیدی.
در iranphp هم تقریبا به همین نتیجه رسیدیم.

تشکر
 

جدیدترین ارسال ها

بالا