الدالة empty() في PHP
(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
: إعادة طول سلسلةٍ نصيةٍ.