الفرق بين المراجعتين لصفحة: «PHP/empty»

من موسوعة حسوب
< PHP
ط تصحيحات في التنسيق
لا ملخص تعديل
سطر 43: سطر 43:
|ستعمال الدالة <code>empty()‎</code>‎ مع فهارس غير نصية للسلاسل النصية سيعيد القيمة <code>true</code>.
|ستعمال الدالة <code>empty()‎</code>‎ مع فهارس غير نصية للسلاسل النصية سيعيد القيمة <code>true</code>.
|}
|}
== أمثلة ==
المثال 1: مثال بسيط يوضح الفرق بين الدالتين <code>empty()‎</code> و <code>isset()‎</code>
<syntaxhighlight lang="php">
<?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';
}
?>
</syntaxhighlight>
المثال 2: استخدام empty()‎ مع فهارس للسلاسل النصية
تغيّر سلوك الدالة empty()‎ في الإصدار 5.4 من اللغة عند تمرير فهارس نصية لمحاولة الوصول إلى مكونات السلسلة النصية:
<syntaxhighlight lang="php">
<?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']));
?>
</syntaxhighlight>
ناتج المثال السابق في PHP 5.3:
<syntaxhighlight lang="text">
bool(false)
bool(false)
bool(false)
bool(false)
bool(false)
bool(false)
</syntaxhighlight>
أما ناتجه في PHP 5.4:
<syntaxhighlight lang="text">
bool(true)
bool(false)
bool(false)
bool(false)
bool(true)
bool(true)
</syntaxhighlight>
== ملاحظات ==
لما كانت الدالة <code>isset()‎</code> تعد بنيةً من بنى اللغة (language construct) وليست دالةً (function)، فلا يمكننا استخدام «<nowiki/>[[PHP/Functions/variable-functions|الدوال المتغيرة]]» (variable functions).
عند استخدام <code>isset()‎</code> على خاصياتٍ تابعةٍ لكائنٍ لكننا لا نستطيع الوصول إليها، فسوف تستدعى الدالة زائدة التحميل <code>[[PHP/OOP/magic|‎__isset()]]</code>‎ إن كانت معرفةً.
== انظر أيضًا ==
* <code>[[PHP/Function/empty|()isset]]</code>: تُحدِّد الدالة <code>isset()‎</code> ما إذا كان المتغير معرفًا وليس NULL.
* <code>[[PHP/Function/unset|unset()‎]]</code>: إلغاء تعريف المتغير.
* <code>[[PHP/Function/defined|defined()‎]]</code>: التحقق إن كان الثابت المعطى موجودًا.
* <code>[[PHP/Function/array-key-exists|array_key_exists()‎]]</code>: التحقق إن كان فهرسٌ ما موجودًا في المصفوفة.
* <code>[[PHP/Function/count|()count]]</code>: حساب عناصر المصفوفة.
* <code>[[PHP/Function/strlen|()strlen]]</code>: إعادة طول سلسلةٍ نصيةٍ.
* <code>[[PHP/Function/is-null|is_null()‎]]</code>: تحديد إذا كان المتغير NULL.
== مصادر ==
* [http://php.net/manual/en/function.empty.php صفحة الدالة empty في توثيق PHP الرسمي].
[[تصنيف:PHP]]
[[تصنيف:PHP Function]]

مراجعة 13:54، 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;

// لما أن$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.

مصادر