تابع isset ، empty و is_null در php از توابع مربوط به نوع داده ها در php است که برای چک کردن خالی بودن یا نبودن مقدار یک آرایه ، متغیر استفاده می شود .
تابع isset چک میکند آیا یک متغیر دارای مقدار است یا نه
تابع empty() چک می کند که آیا متغیر پاس داده شده خالی است یا نه .
تابع is_null() چک میکند که آیا متغییر به به صورت NULL تعریف شده است یا نه
دو تابع isset و empty از مجموع توابع boolean هستند و مقدرای که برمیگردانند true یا false میباشد ، این دوتابع به ظاهر کار یکسانی انجام میدهند و در واقعا کاملا متفاوت هستند! در ادامه با ذکر مثال کاملا توضیح خواهیم داد
وظیفه تابع isset این هست که چک کند آیا یک متغیر وجود دارد یا خیر ، اگر وجود داشت مقدار true و اگر وجود نداشت مقدار false را برمیگرداند ، نکته ای که وجود دارد این هست که isset مقدار خالی یا پر بودن متغیر را چک نمیکند چون بهش ربطی نداره! بلکه فقط وجود یا عدم وجود متغیر را بررسی میکند در صورتی که تابع empty فقط پر یا خالی بودن متغیر را چک میکند و اگر دارای مقدار بود true و اگر مقداری نداشت false !
نکته دیگری که وجود دارد این هست که اگر متغیر وجود نداشت و پر یا خالی بودن آن را با empty چک کنیم این تابع فرض میکند که متغیر خالی میباشد و مقدار true را برمیگرداند
خب ، حالا تفاوت این ها را پیدا کنید !
احساس می کنم موثر ترین راه برای درک تفاوت بین تابع isset ، empty و is_null در php استفاده از جدول زیر است .
“” | “apple” | NULL | FALSE | ۰ | undefined | |
empty() | TRUE | FALSE | TRUE | TRUE | TRUE | TRUE |
is_null() | FALSE | FALSE | TRUE | FALSE | FALSE | ERROR |
isset() | TRUE | TRUE | FALSE | TRUE | TRUE | FALSE |
کد درک تفاوت تابع isset ، empty و is_null
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
<?php print "<br/>ISSET: <br/>"; $var = ""; print "isset():". isset($var)."<br/>"; $var = "apple"; print "isset('apple'):". isset($var)."<br/>"; $var = NULL; print "isset('NULL'):". isset($var)."<br/>"; $var = FALSE; print "isset('FALSE'):". isset($var)."<br/>"; $var = 0; print "isset('0'):". isset($var)."<br/>"; print "isset(undefined):". isset($var3)."<br/>"; print "<br/>EMPTY: <br/>"; $var = ""; print "empty():". empty($var)."<br/>"; $var = "apple"; print "empty('apple'):". empty($var)."<br/>"; $var = NULL; print "empty('NULL'):". empty($var)."<br/>"; $var = FALSE; print "empty('FALSE'):". empty($var)."<br/>"; $var = 0; print "empty('0'):". empty($var)."<br/>"; print "empty(undefined):". empty($var1)."<br/>"; print "<br/>IS_NULL: <br/>"; $var = ""; print "is_null():". is_null($var)."<br/>"; $var = "apple"; print "is_null('apple'):". is_null($var)."<br/>"; $var = NULL; print "is_null('NULL'):". is_null($var)."<br/>"; $var = FALSE; print "is_null('FALSE'):". is_null($var)."<br/>"; $var = 0; print "is_null('0'):". is_null($var)."<br/>"; print "is_null(undefined):". is_null($var2)."<br/>"; ?> |
برای کپی صحیح و کامل کدها ، دابل کلیک کرده تا وارد محیط سفید و کپی شوید در غیر اینصورت امکان دارد اجرای کدها با مشکل روبرو شود
خروجی :
1 |
ISSET: isset():1 isset(‘apple’):1 isset(‘NULL’): isset(‘FALSE’):1 isset(‘0’):1 isset(undefined): EMPTY: empty():1 empty(‘apple’): empty(‘NULL’):1 empty(‘FALSE’):1 empty(‘0’):1 empty(undefined):1 IS_NULL: is_null(): is_null(‘apple’): is_null(‘NULL’):1 is_null(‘FALSE’): is_null(‘0’): Notice: Undefined variable: var2 in C:\xampp\htdocs\phppot_samples\php_isset\php_isset.php on line 40 is_null(undefined):1 |
خب دیدید که توابع isset ، empty و is_null در php تفاوت هایی با هم دارند که استفاده درست از آنها به ما در چک کردن مقدار های یک متغیر یا آرایه کمک بسیاری خواهد کرد و از بروز خطاهای Notice می توان با چک کردن مقادیر ، جلوگیری کرد .
هرگونه مشکلی در پیاده سازی کد ها داشتید از قسمت نظرات ارسال کنید . سریعا پاسخگوی سوالات شما هستیم .
موفق باشید
سلام وخسته نباشید ممنون بابت مطالب مفیدتون. من داخل دسته بندی ها parent_idدارم و میتونه null باشه استادم این شرط رو نوشته و خواسته تکمیل کنیم اما من نتونستم ممنون میشم راهنمایی م کنید واقعا من گیج شدم.
public function store(Request $request)
{
$request->validate([
‘picture’ =>’required|image|max:512|mimes:jpeg,png,gif,jpg’,
‘parent_id’ =>’nullable|numeric|exists:categories,id’,
‘title’ =>’required|string|min:2|max:255′,
]);
$data = $request->only([‘title’]);
$data[‘picture’]= $this->uploadFile($request->picture);
if(isset($request[‘parent_id’])){
/** @var Category $parent */
$parent = Category::where(‘id’, $request[‘parent_id’])->first();
if($parent->parent_id){
}
}
سلام.
در مورد کدهای غیر از کدهای این صفحه راهنمایی نمیشه.
با سلام خیلی خیلی ممنون واقعا عالی بود موفق باشید 🙂
با سلام و عرض خسته نباشید از مقاله ی خوبتون
واقعا عالی بود و من رو از ابهام خارج کرد . فقط ی جاش فکر کنم اشتباه تایپس داره . اونجاش که نوشته « اگر دارای مقدار بود true و اگر مقداری نداشت false ! » من فکر کنم بر عکس نوشته شده .
باز هم ممنونم از اینکه دانش خودتون رو به اشتراک می گذارید .
سلام. ممنون. خوشحالیم که مفید واقع شده.
اگر یکبار تست کنید متوجه خواهید شد که متن درست است
موفق باشید.
سلام خسته نباشید ببخشید میگم من یک فایل Php دارم و میخوام با صدا زدن دو متغیر از طریق یک کویری در دیتابیس مقادیری ثبت شود اما هر کاری میکنم این دو متغیر isset نمیشن! به عبارتی دو متغیر را در مرورگر جلوی فایل php اولی رو با علامت سوال و بعدی رو هم با & issetمیکنم ولی با شرطی که گذاشتم از طریق همین تابع isset() برام چاپ میکنعه که isset نشده متغیر ها.
سلام . ممنون . حتما اشتباه نوشتید . همین کد مثال ساده رو ببینید و دوباره تست کنید.
موفق باشید.
اهان مرسی (: حتما یه بررسی میکنم
سپاس ممنون خسته نباشید
سلام خسته نباشید؛چجور میشه در php با چک کردن لینک تشخصی داد صفحه وجود داره یا نداره،مثلا برای صفحه ای های که وجود نداری تشخص بده این صفحه وجود ندارد با سپاس .”Page Not Found “
سلام ممنونم . به سادگی با بررسی هدرها میتونید این مورد رو چک کنید.
$headers = get_headers($url, 1);
خانه اول این آرایه ای که برگشت داده میشه شامل وضعیت درخواست است :
Array
(
[۰] => HTTP/1.1 200 OK
[Date] => Sat, 29 May 2018 12:28:14 GMT
[Server] => Apache/1.3.27 (Unix) (Red-Hat/Linux)
[Last-Modified] => Wed, 08 Jan 2003 23:11:55 GMT
[ETag] => “۳f80f-1b6-3e1cb03b”
[Accept-Ranges] => bytes
[Content-Length] => ۴۳۸
[Connection] => close
[Content-Type] => text/html
)
با CRUL هم میتونید چک کنید ولی تابع بالا ساده تر است.
موفق باشید.