الدالة 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;
// لما أن$var يساوي empty ستعاد قيمة true
if (empty($var)) {
echo '$var is either 0, empty, or not set at all';
}
// لما أن var$ معرفاً ستعاد قيمة 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)
ملاحظات
لما كانت الدالة isset()
تعد بنيةً من بنى اللغة (language construct) وليست دالةً (function)، فلا يمكننا استخدام «الدوال المتغيرة» (variable functions).
عند استخدام isset()
على خاصياتٍ تابعةٍ لكائنٍ لكننا لا نستطيع الوصول إليها، فسوف تستدعى الدالة زائدة التحميل __isset()
إن كانت معرفةً.
انظر أيضًا
()isset
: تُحدِّد الدالةisset()
ما إذا كان المتغير معرفًا وليس NULL.unset()
: إلغاء تعريف المتغير.defined()
: التحقق إن كان الثابت المعطى موجودًا.array_key_exists()
: التحقق إن كان فهرسٌ ما موجودًا في المصفوفة.()count
: حساب عناصر المصفوفة.()strlen
: إعادة طول سلسلةٍ نصيةٍ.is_null()
: تحديد إذا كان المتغير NULL.