تفاوت توابع مربوط به نوع داده ها در PHP
- نویسنده : webelizer در دسته بندی php, طراحی سایت
- 3 نظر و 432 بازدید
- ۹۳/۰۳/۱۱
- انواع داده در پی اچ پی
یکی از نکات به ظاهر کوچک اما فوق العاده مهم در پی اچ پی، فهم صحیح از نحوه و جایگاه استفاده این توابع و حالت هاست:
فرض کنین متغیری به نام $artabaz داریم.
حالا میخوایم این ها رو برای اون بررسی کنیم:
if(empty($artabaz)) if(is_null($artabaz)) if(isset($artabaz)) if($artabaz)
من به شخصه در خیلی از کدها دیدم که افراد به استثناءهایی که ممکن هست در هرکدوم از این توابع به وجود بیاد توجه نمیکنن و از روی عادت از یک نوع تابع در تمام برنامه هاشون استفاده میکنن.
مثلا اغلب، افرادی که کمی در پی اچ پی حرفه ای تر میشن، برای سرعت دادن به کارهاشون، در هنگام بررسی متغییرها، صرفا از کد زیر استفاده میکنن:
if($artabaz) { // something } else { }
این کد در اغلب مواقع پاسخگوی نیازها هست اما اگر ما از این کد در فرمی استفاده کنیم که در اون عدد صفر هم به عنوان ورودی قابل قبول باشه، اونوقت این شرط ایراد داره چراکه اگر مقدار آرتاباز برابر 0 باشه اونوقت میره داخل else … و این در حالی هست که کاربر ما اجازه وارد کردن ورودی صفر رو هم داشته اما ما به اون اجازه رو ندادیم!
در واقع شرط بالا معادل نقیض empty() هست.
یا گاهی اوقات دیده میشه که افراد اشتباها برای اینکه تهی بودن یک متغییر رو بررسی کنن از isset استفاده میکنن.
کد زیر رو در نظر بگیرین:
$artabaz='' if(isset($artabaz)) { // something } else { }
در اینجا، با اینکه متغییر تهی هست اما شرط true اجرا میشه.
پس می بایست در استفاده از این توابع نهایت دقت رو داشته باشیم.
در ادامه جدولی از حالت های مختلف رو براتون آوردیم:
Expression |
if($artabaz) |
||||
$artabaz = “”; | string | TRUE | FALSE | TRUE | FALSE |
$artabaz = null; | NULL | TRUE | TRUE | FALSE | FALSE |
var $artabaz; | NULL | TRUE | TRUE | FALSE | FALSE |
$artabaz is undefined | NULL | TRUE | TRUE | FALSE | FALSE |
$artabaz = array(); | array | TRUE | FALSE | TRUE | FALSE |
$artabaz = false; | boolean | TRUE | FALSE | TRUE | FALSE |
$artabaz = true; | boolean | FALSE | FALSE | TRUE | TRUE |
$artabaz = 1; | integer | FALSE | FALSE | TRUE | TRUE |
$artabaz = 42; | integer | FALSE | FALSE | TRUE | TRUE |
$artabaz = 0; | integer | TRUE | FALSE | TRUE | FALSE |
$artabaz = -1; | integer | FALSE | FALSE | TRUE | TRUE |
$artabaz = “1″; | string | FALSE | FALSE | TRUE | TRUE |
$artabaz = “0″; | string | TRUE | FALSE | TRUE | FALSE |
$artabaz = “-1″; | string | FALSE | FALSE | TRUE | TRUE |
$artabaz = “php”; | string | FALSE | FALSE | TRUE | TRUE |
$artabaz = “true”; | string | FALSE | FALSE | TRUE | TRUE |
$artabaz = “false”; | string | FALSE | FALSE | TRUE | TRUE |
ممنون از آموزش خوبتون!
موفق باشید.
سلام
روز بخیر
توی طراحی صفحات وردپرس امکان ذخیره و استفاده مجدد متغیرهای php وجود داره؟
مثلا من در قسمت بالای صفحه میخوام id یک پست را ذخیره کنم.و پس از پایان حلقه و شرطها. در یک حلقه دیگر محتوای پست را بر اساس id ای که از قبل ذخیره کردم فراخوانی کنم و نمایش بدم. از متغیر های global استفاده کردم ولی بعد از خروج از حلقه و شرط مقدار متغیر از بین میره!
طبق تجربه ای که دارید راه حلی به نظرتون میرسه برای حل این مشکل؟
باسلام
اگر در همان صفحه میخواهید استفاده کنید نیازی به global نیست. کافیست تحت یک نام مناسب آن در متغییری ذخیره کنید و سپس تا انتهای آن صفحه از هر نقطه ای که نیاز باشد قابل فراخوانی خواهد بود.
ابتدا متغییر را در محل مورد نیاز echo کنید ببینید مورد چپ میشود؟ اگر مشکلی نبود آنگاه احتمالا مشکل از کوئری تان هست.