اذهب إلى المحتوى
  • 0

لماذا يجب أن أستخدم isset و empty للتحقق من قيمة متغير ما في PHP؟

Emad Saif

السؤال

هل هناك فرق بين isset وempty! . حيث أجد أن كثير من المبرمجين يستعملون كلا الدالتين للتحقق من أن متغير ما غير فارغ not empty

if ( isset($myArr[1]) AND !empty($myArr[1]) ) {
	// do something
}

في الشرط السابق، هل من الجيد التحقق بهذه الطريقة أم أنها زائدة عن الحاجة؟ وهل هناك طريقة أقصر لفعل الشيء نفسه؟

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 1

تعتبر الوظيفة empty طريقة للتحقق من ما ان كان متغير ما يحمل قيمة فارغة، القيم الفارغة المعتبرة هي: 

  • "" سلسلة نصية فارغة. 
  • 0 كعدد.
  • 0.0 كعدد عشري.
  • "0" كسلسلة نصية.
  • Null كقيمة فاضية 
  • false كقيمة بوليانية
  • [] كمصفوفة فارغة

يقتضي هذا ان يكون المتغير معرفا بالفعل، ولكنه يحمل احد القيم المعتبرة فارغة. 

في حين ان الذي تقوم به الوظيفة isset هو التحقق من ما ان كان هذا المتغير معرفا أول الأمر أم لا، 

لاحظ المثالين: 

<?php 

$emptyVar = '';

$emptyVar2 = [];

$notEmpty = 'Hsoub';

echo empty($emptyVar); // true

echo empty($emptyVar2); // true 

echo empty($notEmpty); // false 

echo isset($unsetVar); // false

وبالتالي، المثال الذي لديك يتحقق من ما ان كان المتغير معرفا، ولا يحمل قيمة فارغة. 

كطريقة اقصر يمكنك مباشرة استعمال الوظيفة empty وحدها، وذلك لأن هاته الأخيرة تقوم بإعادة قيمة بوليانية false في حالة عدم تعريف المتغير، فبدل: 

if ( isset($myArr[1]) AND !empty($myArr[1]) ) {
	// do something
}

يمكنك مباشرة استعمال: 

if ( !empty($myArr[1]) ) {
	// do something
}
رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 1

يمكنك استعمال هاتين الدالتين عند إرسال Request من خلال Form. 

  1. دالة isset : تقوم بفحص ما اذا كان يوجد قيمة في المتغير أم لا وبالعادة تستخدم عند فحص نوع ال Request ما اذا كان POST او GET 
  2. دالة empty : يستخدم لفحص قيمة فارغة والتأكد من انها فارغة بخلاف دالة isset. 

في المثال الذي طرحته يمكنك إستخدام واحدة من الشرطين،. لانهم متشابهين سواء isset or !empty. 

وكما ذكرت isset تساخدم لتفحص قيمة مدخلة وليست فارغة، empty تستخدم لفحص قيمة فارغة. 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...