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

من موسوعة حسوب
< PHP
لا ملخص تعديل
مراجعة الصفحة
سطر 2: سطر 2:
(PHP 4, PHP 5, PHP 7)
(PHP 4, PHP 5, PHP 7)


تُحدِّد الدالة<code>empty()‎</code>إذا كان المتغير فارغًا.
تُحدِّد الدالة <code>empty()‎</code> إذا كان المتغير فارغًا.
== الوصف ==
== الوصف ==
<syntaxhighlight lang="php">
<syntaxhighlight lang="php">
bool empty ( mixed $var )
bool empty ( mixed $var )
</syntaxhighlight>الدالة<code>empty()‎</code> تتحقق من أنَّ المتغير يُعدّ فارغًا، ويعدّ المتغير فارغًا إذا كان غير موجودٍ أو يساوي القيمة<code>NULL</code> ،الدالة<code>empty()‎</code>لا تولد تحذيرًا إذا لم يكن المتغير معرفًا.
</syntaxhighlight>الدالة <code>empty()‎</code> تتحقق من أنَّ المتغير يُعدّ فارغًا، ويعدّ المتغير فارغًا إذا كان غير موجودٍ أو يساوي القيمة <code>NULL</code>، الدالة <code>empty()‎</code> لا تولد تحذيرًا إذا لم يكن المتغير معرفًا.
== المعاملات ==
== المعاملات ==


=== <code>var</code> ===
=== <code>var</code> ===
المتغير الذي نريد اختبار قيمته إن كان فارغةً أم لا.
المتغير الذي نريد اختبار قيمته إن كان فارغةً أم لا.
=== <code>...</code> ===
وسائط أخرى…


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


لن يولَّد تحذيرٌ إذا لم يكن المتغير معرفًا. وهذا يعني أن الدالة <code>empty()‎</code>يمكن أن تكافئ التعبير البرمجي الآتي: <code>!isset($var) || $var == false</code>
لن يولَّد تحذيرٌ إذا لم يكن المتغير معرفًا. وهذا يعني أن الدالة <code>empty()‎</code>يمكن أن تكافئ التعبير البرمجي الآتي: <code>!isset($var) || $var == false</code>.
== القيم المعادة ==
== القيم المعادة ==
ستُعاد قيمة <code>false</code>إذا كان الوسيط (var) موجودًا ولهُ قيمةٌ أخرى غير NULL ولا تساوي الصفر ، ما عدا ذلك ستُعاد القيمة <code>true</code>
ستُعاد قيمة <code>false</code>إذا كان الوسيط (<code>var</code>) موجودًا ولهُ قيمةٌ أخرى غير <code>NULL</code> ولا تساوي الصفر ، ما عدا ذلك ستُعاد القيمة <code>true</code>.


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


*<code>""</code> (سلسلة نصية فارغة)
*<code>""</code> (سلسلة نصية فارغة)
سطر 38: سطر 35:
|-
|-
|5.5.0
|5.5.0
|صبحت الدالة <code>empty()‎</code>‎ تدعم التعابير البرمجية (expressions) بدل دعمها للمتغيرات فقط.
|أصبحت الدالة <code>empty()‎</code>‎ تدعم التعابير البرمجية (expressions) بدل دعمها للمتغيرات فقط.
|-
|-
|5.4.0
|5.4.0
|ستعمال الدالة <code>empty()‎</code>‎ مع فهارس غير نصية للسلاسل النصية سيعيد القيمة <code>true</code>.
|استعمال الدالة <code>empty()‎</code>‎ مع فهارس غير نصية للسلاسل النصية سيعيد القيمة <code>true</code>.
|}
|}


سطر 50: سطر 47:
$var = 0;
$var = 0;


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


// لما أن var$ معرفاً ستعاد قيمة true
// true، لأنَّ المتغير مضبوط
if (isset($var)) {
if (isset($var)) {
     echo '$var is set even though it is empty';
     echo '$var is set even though it is empty';
سطر 61: سطر 58:
?>
?>
</syntaxhighlight>
</syntaxhighlight>
المثال 2: استخدام empty()‎ مع فهارس للسلاسل النصية
المثال 2: استخدام <code>empty()‎</code> مع فهارس للسلاسل النصية


تغيّر سلوك الدالة empty()‎ في الإصدار 5.4 من اللغة عند تمرير فهارس نصية لمحاولة الوصول إلى مكونات السلسلة النصية:
تغيّر سلوك الدالة <code>empty()‎</code> في الإصدار 5.4 من اللغة عند تمرير فهارس نصية لمحاولة الوصول إلى مكونات السلسلة النصية:
<syntaxhighlight lang="php">
<syntaxhighlight lang="php">
<?php
<?php
سطر 95: سطر 92:


== ملاحظات ==
== ملاحظات ==
لما كانت الدالة <code>isset()‎</code> تعد بنيةً من بنى اللغة (language construct) وليست دالةً (function)، فلا يمكننا استخدام «<nowiki/>[[PHP/Functions/variable-functions|الدوال المتغيرة]]» (variable functions).
لما كانت الدالة <code>empty()‎</code> تعد بنيةً من بنى اللغة (language construct) وليست دالةً (function)، فلا يمكننا استخدام «<nowiki/>[[PHP/Functions/variable-functions|الدوال المتغيرة]]» (variable functions).


عند استخدام <code>isset()‎</code> على خاصياتٍ تابعةٍ لكائنٍ لكننا لا نستطيع الوصول إليها، فسوف تستدعى الدالة زائدة التحميل <code>[[PHP/OOP/magic|‎__isset()]]</code>‎ إن كانت معرفةً.
عند استخدام <code>empty()‎</code> على خاصياتٍ تابعةٍ لكائنٍ لكننا لا نستطيع الوصول إليها، فسوف تستدعى الدالة زائدة التحميل <code>[[PHP/OOP/magic|‎__isset()]]</code>‎ إن كانت معرفةً.


== انظر أيضًا ==
== انظر أيضًا ==
* <code>[[PHP/Function/empty|()isset]]</code>: تُحدِّد الدالة <code>isset()‎</code> ما إذا كان المتغير معرفًا وليس NULL.
* <code>[[PHP/Function/isset|()isset]]</code>: تُحدِّد الدالة <code>isset()‎</code> ما إذا كان المتغير معرفًا وليس NULL.
* <code>[[PHP/Function/unset|unset()‎]]</code>: إلغاء تعريف المتغير.
* <code>[[PHP/Function/unset|unset()‎]]</code>: إلغاء تعريف المتغير.
* <code>[[PHP/Function/defined|defined()‎]]</code>: التحقق إن كان الثابت المعطى موجودًا.
* <code>[[PHP/Function/defined|defined()‎]]</code>: التحقق إن كان الثابت المعطى موجودًا.
سطر 106: سطر 103:
* <code>[[PHP/Function/count|()count]]</code>: حساب عناصر المصفوفة.
* <code>[[PHP/Function/count|()count]]</code>: حساب عناصر المصفوفة.
* <code>[[PHP/Function/strlen|()strlen]]</code>: إعادة طول سلسلةٍ نصيةٍ.
* <code>[[PHP/Function/strlen|()strlen]]</code>: إعادة طول سلسلةٍ نصيةٍ.
* <code>[[PHP/Function/is-null|is_null()‎]]</code>: تحديد إذا كان المتغير NULL.


== مصادر ==
== مصادر ==

مراجعة 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: إعادة طول سلسلةٍ نصيةٍ.

مصادر