الدالة isset()‎ في PHP

من موسوعة حسوب
< PHP
مراجعة 03:43، 4 أبريل 2018 بواسطة عبد اللطيف ايمش (نقاش | مساهمات) (استبدال النص - 'PHP\/Function\/([^|]*)' ب'PHP/$1')

(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.

مصادر