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

مصادر