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

من موسوعة حسوب
< PHP
أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE:الدالة empty()‎ في PHP}}</noinclude> (PHP 4, PHP 5, PHP 7) تُحدِّد الدالة<code>empty()‎</code>إذا كان المت...'
 
ط نقل عبد اللطيف ايمش صفحة PHP/Function/empty إلى PHP/empty: إعادة هيكلة التوثيق
 
(11 مراجعة متوسطة بواسطة مستخدمين اثنين آخرين غير معروضة)
سطر 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> لا تولد تحذيرًا إذا لم يكن المتغير معرفًا.
== المعاملات ==
== المعاملات ==


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


=== <code>...</code> ===
'''ملاحظة:'''
وسائط أخرى…


ملاحظة: سابقاً في 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>.
لن يولَّد تحذيرٌ إذا لم يكن المتغير معرفًا. وهذا يعني أن الدالة ()empty يمكن أن تكافئ التعبير البرمجي الآتي: <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>0</code> (تمثيل العدد الصحيح 0)
*<code>"0.0"</code> (تمثيل العدد العشري 0)
*<code>NULL</code>
*<code>FALSE</code>
*<code>"()array"</code> (مصفوفة فارغة)
== سجل التغييرات ==
 
{| class="wikitable"
!الإصدار
!الوصف
|-
|5.5.0
|أصبحت الدالة <code>empty()‎</code>‎ تدعم التعابير البرمجية (expressions) بدل دعمها للمتغيرات فقط.
|-
|5.4.0
|استعمال الدالة <code>empty()‎</code>‎ مع فهارس غير نصية للسلاسل النصية سيعيد القيمة <code>true</code>.
|}
 
== أمثلة ==
المثال 1: مثال بسيط يوضح الفرق بين الدالتين <code>empty()‎</code> و <code>isset()‎</code>
<syntaxhighlight lang="php">
<?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';
}
?>
</syntaxhighlight>
المثال 2: استخدام <code>empty()‎</code> مع فهارس للسلاسل النصية
 
تغيّر سلوك الدالة <code>empty()‎</code> في الإصدار 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>empty()‎</code> تعد بنيةً من بنى اللغة (language construct) وليست دالةً (function)، فلا يمكننا استخدام «<nowiki/>[[PHP/variable functions|الدوال المتغيرة]]» (variable functions).
 
عند استخدام <code>empty()‎</code> على خاصياتٍ تابعةٍ لكائنٍ لكننا لا نستطيع الوصول إليها، فسوف تستدعى الدالة زائدة التحميل <code>[[PHP/magic|‎__isset()]]</code>‎ إن كانت معرفةً.
 
== انظر أيضًا ==
* <code>[[PHP/isset|()isset]]</code>: تُحدِّد الدالة <code>isset()‎</code> ما إذا كان المتغير معرفًا وليس NULL.
* <code>[[PHP/unset|unset()‎]]</code>: إلغاء تعريف المتغير.
* <code>[[PHP/defined|defined()‎]]</code>: التحقق إن كان الثابت المعطى موجودًا.
* <code>[[PHP/array_key_exists|array_key_exists()‎]]</code>: التحقق إن كان فهرسٌ ما موجودًا في المصفوفة.
* <code>[[PHP/count|()count]]</code>: حساب عناصر المصفوفة.
* <code>[[PHP/strlen|()strlen]]</code>: إعادة طول سلسلةٍ نصيةٍ.
 
== مصادر ==
* [http://php.net/manual/en/function.empty.php صفحة الدالة empty في توثيق PHP الرسمي].
[[تصنيف:PHP]]
[[تصنيف:PHP Function]]

المراجعة الحالية بتاريخ 03:49، 4 أبريل 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: إعادة طول سلسلةٍ نصيةٍ.

مصادر