الدالة empty()‎ في PHP

من موسوعة حسوب
< PHP
مراجعة 14:21، 14 مارس 2018 بواسطة عبد اللطيف ايمش (نقاش | مساهمات) (مراجعة الصفحة)

(PHP 4, PHP 5, PHP 7)

تُحدِّد الدالة empty()‎ إذا كان المتغير فارغًا.

الوصف

bool empty ( mixed $var )

الدالة empty()‎ تتحقق من أنَّ المتغير يُعدّ فارغًا، ويعدّ المتغير فارغًا إذا كان غير موجودٍ أو يساوي القيمة NULL، الدالة empty()‎ لا تولد تحذيرًا إذا لم يكن المتغير معرفًا.

المعاملات

var

المتغير الذي نريد اختبار قيمته إن كان فارغةً أم لا.

ملاحظة:

سابقاً في PHP 5.5، لم تكن تدعم الدالةempty()‎إلا المتغيرات فقط وتمرير أي شيًء آخر سوف يؤدي إلى خطأ من النوع parse error، وبعبارةًٍ آخرى، لن يعمل التعبير البرمجي الآتي مع الدالةempty()‎:‏ empty(trim($name))‎ لذا استخدم التعبير trim($name) == false.

لن يولَّد تحذيرٌ إذا لم يكن المتغير معرفًا. وهذا يعني أن الدالة empty()‎يمكن أن تكافئ التعبير البرمجي الآتي: ‎!isset($var) || $var == false.

القيم المعادة

ستُعاد قيمة falseإذا كان الوسيط (var) موجودًا ولهُ قيمةٌ أخرى غير NULL ولا تساوي الصفر ، ما عدا ذلك ستُعاد القيمة true.

القيم التالية تعد قيمًا فارغةً:

  • "" (سلسلة نصية فارغة)
  • 0 (تمثيل العدد الصحيح 0)
  • "0.0" (تمثيل العدد العشري 0)
  • NULL
  • FALSE
  • "()array" (مصفوفة فارغة)

سجل التغييرات

الإصدار الوصف
5.5.0 أصبحت الدالة empty()‎‎ تدعم التعابير البرمجية (expressions) بدل دعمها للمتغيرات فقط.
5.4.0 استعمال الدالة empty()‎‎ مع فهارس غير نصية للسلاسل النصية سيعيد القيمة true.

أمثلة

المثال 1: مثال بسيط يوضح الفرق بين الدالتين empty()‎ و isset()‎

<?php
$var = 0;

// true، لأنَّ المتغير فارغ
if (empty($var)) {
    echo '$var is either 0, empty, or not set at all';
}

// true، لأنَّ المتغير مضبوط
if (isset($var)) {
    echo '$var is set even though it is empty';
}
?>

المثال 2: استخدام empty()‎ مع فهارس للسلاسل النصية

تغيّر سلوك الدالة empty()‎ في الإصدار 5.4 من اللغة عند تمرير فهارس نصية لمحاولة الوصول إلى مكونات السلسلة النصية:

<?php
$expected_array_got_string = 'somestring';
var_dump(empty($expected_array_got_string['some_key']));
var_dump(empty($expected_array_got_string[0]));
var_dump(empty($expected_array_got_string['0']));
var_dump(empty($expected_array_got_string[0.5]));
var_dump(empty($expected_array_got_string['0.5']));
var_dump(empty($expected_array_got_string['0 Mostel']));
?>

ناتج المثال السابق في PHP 5.3:

bool(false)
bool(false)
bool(false)
bool(false)
bool(false)
bool(false)

أما ناتجه في PHP 5.4:

bool(true)
bool(false)
bool(false)
bool(false)
bool(true)
bool(true)

ملاحظات

لما كانت الدالة empty()‎ تعد بنيةً من بنى اللغة (language construct) وليست دالةً (function)، فلا يمكننا استخدام «الدوال المتغيرة» (variable functions).

عند استخدام empty()‎ على خاصياتٍ تابعةٍ لكائنٍ لكننا لا نستطيع الوصول إليها، فسوف تستدعى الدالة زائدة التحميل ‎__isset()‎ إن كانت معرفةً.

انظر أيضًا

  • ()isset: تُحدِّد الدالة isset()‎ ما إذا كان المتغير معرفًا وليس NULL.
  • unset()‎: إلغاء تعريف المتغير.
  • defined()‎: التحقق إن كان الثابت المعطى موجودًا.
  • array_key_exists()‎: التحقق إن كان فهرسٌ ما موجودًا في المصفوفة.
  • ()count: حساب عناصر المصفوفة.
  • ()strlen: إعادة طول سلسلةٍ نصيةٍ.

مصادر