الفرق بين المراجعتين لصفحة: «PHP/empty»
لا ملخص تعديل |
ط نقل عبد اللطيف ايمش صفحة PHP/Function/empty إلى PHP/empty: إعادة هيكلة التوثيق |
||
(10 مراجعات متوسطة بواسطة مستخدمين اثنين آخرين غير معروضة) | |||
سطر 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> | </syntaxhighlight>الدالة <code>empty()</code> تتحقق من أنَّ المتغير يُعدّ فارغًا، ويعدّ المتغير فارغًا إذا كان غير موجودٍ أو يساوي القيمة <code>NULL</code>، الدالة <code>empty()</code> لا تولد تحذيرًا إذا لم يكن المتغير معرفًا. | ||
== المعاملات == | == المعاملات == | ||
سطر 12: | سطر 12: | ||
المتغير الذي نريد اختبار قيمته إن كان فارغةً أم لا. | المتغير الذي نريد اختبار قيمته إن كان فارغةً أم لا. | ||
'''ملاحظة:''' | |||
سابقاً في 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> (سلسلة نصية فارغة) | ||
*<code>0</code> (تمثيل العدد الصحيح 0) | *<code>0</code> (تمثيل العدد الصحيح 0) | ||
*<code>"0.0"</code>(تمثيل العدد العشري 0) | *<code>"0.0"</code> (تمثيل العدد العشري 0) | ||
*<code>NULL</code> | *<code>NULL</code> | ||
*<code>FALSE</code> | *<code>FALSE</code> | ||
*<code>"()array"</code>(مصفوفة فارغة) | *<code>"()array"</code> (مصفوفة فارغة) | ||
== سجل التغييرات == | == سجل التغييرات == | ||
سطر 38: | سطر 35: | ||
|- | |- | ||
|5.5.0 | |5.5.0 | ||
| | |أصبحت الدالة <code>empty()</code> تدعم التعابير البرمجية (expressions) بدل دعمها للمتغيرات فقط. | ||
|- | |- | ||
|5.4.0 | |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
: إعادة طول سلسلةٍ نصيةٍ.