الفرق بين المراجعتين ل"PHP/isset"
ط (استبدال النص - 'PHP/Functions/variable-functions' ب'PHP/variable functions') |
ط (استبدال النص - 'PHP/OOP/magic' ب'PHP/magic') |
||
سطر 115: | سطر 115: | ||
لما كانت الدالة <code>isset()</code> تعد بنيةً من بنى اللغة (language construct) وليست دالةً (function)، فلا يمكننا استخدام «<nowiki/>[[PHP/variable functions|الدوال المتغيرة]]» (variable functions). | لما كانت الدالة <code>isset()</code> تعد بنيةً من بنى اللغة (language construct) وليست دالةً (function)، فلا يمكننا استخدام «<nowiki/>[[PHP/variable functions|الدوال المتغيرة]]» (variable functions). | ||
− | عند استخدام <code>isset()</code> على خاصياتٍ تابعةٍ لكائنٍ لكننا لا نستطيع الوصول إليها، فسوف تستدعى الدالة زائدة التحميل <code>[[PHP | + | عند استخدام <code>isset()</code> على خاصياتٍ تابعةٍ لكائنٍ لكننا لا نستطيع الوصول إليها، فسوف تستدعى الدالة زائدة التحميل <code>[[PHP/magic|__isset()]]</code> إن كانت معرفةً. |
== انظر أيضًا == | == انظر أيضًا == |
مراجعة 03:32، 4 أبريل 2018
(PHP 4, PHP 5, PHP 7)
تُحدِّد الدالة isset()
ما إذا كان المتغير معرفًا وليس NULL.
الوصف
bool isset ( mixed $var [, mixed $... ] )
إذا ألغي تعريف أحد المتغيرات باستخدام الدالة unset()
، فسوف يؤدي ذلك إلى إلغاء وجوده كليًا من السكربت، ويمكن استخدام الدالة isset
للتحقق من وجود المتغير وستُعاد قيمة false
عند فحص المتغير الذي يحمل القيمة NULL ،ونلاحظ أيضاً أن القيمة الحرفية الفارغة ("0\
"، التي تسمى null character) لا تكافئ القيمة الثابتة NULL في PHP.
ويمكن للدالة isset
أن تتعامل مع أكثر من وسيط في نفس الوقت وستُعاد قيمة true
فقط في حال كانت جميع الوسائط معرفةً. لاحظ أنَّ عملية التحقق من وجود المتغيرات ستجرى من اليسار إلى اليمين، وستتوقف عند مصادفة متغير غير معرَّف.
المعاملات
var
جميع الوسائط التي يمكن فحصُها.
...
وسائط أخرى…
القيم المعادة
ستُعاد قيمة true
إذا كان الوسيط (var) موجودًا ولهُ قيمةً أخرى غير NULL، ما عدا ذلك ستُعاد القيمة false
.
سجل التغييرات
الإصدار | الوصف |
---|---|
5.4.0 | استعمال الدالة isset() مع فهارس غير نصية للسلاسل النصية سيعيد القيمة true .
|
أمثلة
المثال 1: مثال على الدالة isset()
:
<?php
$var = '';
// وسوف تطبع الجملة true ستُعاد قيمة
if (isset($var)) {
echo "This var is set so I will print.";
}
// var_dump من أجل الحصول على مخرجات منطقية في المثال التالي سنستخدم الدالة
$a = "test";
$b = "anothertest";
var_dump(isset($a)); // TRUE
var_dump(isset($a, $b)); // TRUE
unset ($a);
var_dump(isset($a)); // FALSE
var_dump(isset($a, $b)); // FALSE
$foo = NULL;
var_dump(isset($foo)); // FALSE
?>
المثال 2: مثال يوضح كيفية عمل الدالة ()isset
على عناصر المصفوفة:
<?php
$a = array ('test' => 1, 'hello' => NULL, 'pie' => array('a' => 'apple'));
var_dump(isset($a['test'])); // TRUE
var_dump(isset($a['foo'])); // FALSE
var_dump(isset($a['hello'])); // FALSE
// المفتاح hello
// يكافئ القيمة NULL
// لذا سيعد على أنه غير مضبوط
// إذا أردت التحقق من وجود مفاتيح في المصفوفة تشير إلى NULL:
var_dump(array_key_exists('hello', $a)); // TRUE
// التحقق من قيم المصفوفات المتشعبة
var_dump(isset($a['pie']['a'])); // TRUE
var_dump(isset($a['pie']['b'])); // FALSE
var_dump(isset($a['cake']['a']['b'])); // FALSE
?>
المثال 3: استخدام isset()
مع فهارس للسلاسل النصية
تغيّر سلوك الدالة isset()
في الإصدار 5.4 من اللغة عند تمرير فهارس نصية لمحاولة الوصول إلى مكونات السلسلة النصية:
<?php
$expected_array_got_string = 'somestring';
var_dump(isset($expected_array_got_string['some_key']));
var_dump(isset($expected_array_got_string[0]));
var_dump(isset($expected_array_got_string['0']));
var_dump(isset($expected_array_got_string[0.5]));
var_dump(isset($expected_array_got_string['0.5']));
var_dump(isset($expected_array_got_string['0 Mostel']));
?>
ناتج المثال السابق في PHP 5.3:
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
أما ناتجه في PHP 5.4:
bool(false)
bool(true)
bool(true)
bool(true)
bool(false)
bool(false)
ملاحظات
الدالة isset()
تعمل مع المتغيرات فقط، وتمرير أي شيء آخر سيؤدي إلى إطلاق خطأ parse error. يمكنك التحقق من ضبط الثوابت باستخدام الدالة defined()
.
لما كانت الدالة isset()
تعد بنيةً من بنى اللغة (language construct) وليست دالةً (function)، فلا يمكننا استخدام «الدوال المتغيرة» (variable functions).
عند استخدام isset()
على خاصياتٍ تابعةٍ لكائنٍ لكننا لا نستطيع الوصول إليها، فسوف تستدعى الدالة زائدة التحميل __isset()
إن كانت معرفةً.
انظر أيضًا
()empty
: تحديد ما إذا كان المتغير فارغًا.unset()
: إلغاء تعريف المتغير.defined()
: التحقق إن كان الثابت المعطى موجودًا.array_key_exists()
: التحقق إن كان فهرسٌ ما موجودًا في المصفوفة.()count
: حساب عناصر المصفوفة.()strlen
: إعادة طول سلسلةٍ نصيةٍ.is_null()
: تحديد إذا كان المتغير NULL.