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

من موسوعة حسوب
< PHP
لا ملخص تعديل
إضافة الأقسام الناقصة وإجراء تصويبات وإضافة روابط
سطر 2: سطر 2:
(PHP 4, PHP 5, PHP 7)
(PHP 4, PHP 5, PHP 7)


تحديد ما إذا كان المتغير معرفًا وليس NULL.
تُحدِّد الدالة <code>isset()‎</code> ما إذا كان المتغير معرفًا وليس NULL.
== [[PHP/Functions/isset_desc|الوصف]] ==
== الوصف ==
<code>‎bool isset ( mixed $var [, mixed $... ] )</code>
<syntaxhighlight lang="php">
 
bool isset ( mixed $var [, mixed $... ] )
إذا ألغي تعريف أحد المتغيرات باستخدام الدالة unset()‎، فسوف يؤدي ذلك إلى إلغاء وجوده كليًا من السكربت، ويمكن استخدام الدالة isset للتحقق من وجود المتغير وستُعاد قيمة false عند فحص المتغير الذي يحمل القيمة NULL ،ونلاحظ أيضاً أن القيمة الحرفية الفارغة ("0\"، التي تسمى null character) لا تكافئ القيمة الثابتة NULL في PHP.
</syntaxhighlight>إذا ألغي تعريف أحد المتغيرات باستخدام الدالة <code>[[PHP/Function/unset|unset()‎]]</code>، فسوف يؤدي ذلك إلى إلغاء وجوده كليًا من السكربت، ويمكن استخدام الدالة <code>isset</code> للتحقق من وجود المتغير وستُعاد قيمة <code>false</code> عند فحص المتغير الذي يحمل القيمة NULL ،ونلاحظ أيضاً أن القيمة الحرفية الفارغة ("<code>0\</code>"، التي تسمى null character) لا تكافئ القيمة الثابتة NULL في PHP.


ويمكن للدالة isset أن تتعامل مع أكثر من وسيط في نفس الوقت وستُعاد قيمة true فقط في حال كانت جميع الوسائط معرفةً. لاحظ أنَّ عملية التحقق من وجود المتغيرات ستجرى من اليسار إلى اليمين، وستتوقف عند مصادفة متغير غير معرَّف.
ويمكن للدالة <code>isset</code> أن تتعامل مع أكثر من وسيط في نفس الوقت وستُعاد قيمة <code>true</code> فقط في حال كانت جميع الوسائط معرفةً. لاحظ أنَّ عملية التحقق من وجود المتغيرات ستجرى من اليسار إلى اليمين، وستتوقف عند مصادفة متغير غير معرَّف.
== [[PHP/Functions/isset_var|الوسائط]] ==
== [[PHP/Functions/isset_var|الوسائط]] ==
<code>var</code>


=== <code>var</code> ===
جميع الوسائط التي يمكن فحصُها.
جميع الوسائط التي يمكن فحصُها.


<code></code>
=== <code>...</code> ===
 
وسائط أخرى…
وسائط أخرى…
== [[PHP/Functions/isset_returenVal|القيم المعادة]] ==
== [[PHP/Functions/isset_returenVal|القيم المعادة]] ==
ستُعاد قيمة true إذا كان الوسيط (var) موجودًا ولهُ قيمةً أخرى غير NULL، ما عدا ذلك ستُعاد القيمة false.
ستُعاد قيمة <code>true</code> إذا كان الوسيط (var) موجودًا ولهُ قيمةً أخرى غير NULL، ما عدا ذلك ستُعاد القيمة <code>false</code>.
 
== سجل التغييرات ==
{| class="wikitable"
!الإصدار
!الوصف
|-
|5.4.0
|استعمال الدالة <code>isset()‎</code> مع فهارس غير نصية للسلاسل النصية سيعيد القيمة <code>true</code>.
|}


مثال1: مثال على الدالة isset
== أمثلة ==
المثال 1: مثال على الدالة <code>isset()‎</code>:
<syntaxhighlight lang="php">
<syntaxhighlight lang="php">
<?php
<?php


$var = '';// php قيمة حرفية فارغة وتعتبر كقيمة حقيقة في
$var = '';


// وسوف تطبع الجملة true ستُعاد قيمة  
// وسوف تطبع الجملة true ستُعاد قيمة  
if (isset($var)) {
if (isset($var)) {
     echo "This var is set so I will print.";
     echo "This var is set so I will print.";
}
}


// var_dump من أجل الحصول على مخرجات منطقية في المثال التالي سنستخدم الدالة
// var_dump من أجل الحصول على مخرجات منطقية في المثال التالي سنستخدم الدالة
$a = "test";
$a = "test";
$b = "anothertest";
$b = "anothertest";


var_dump(isset($a));     // TRUE
var_dump(isset($a));     // TRUE
var_dump(isset($a, $b)); // TRUE
var_dump(isset($a, $b)); // TRUE


سطر 48: سطر 57:
?>
?>
</syntaxhighlight>
</syntaxhighlight>
مثال2: مثال على الدالة isset  يوضح كيفية عمل الدالة ()isset على عناصر المصفوفة
المثال 2: مثال يوضح كيفية عمل الدالة <code>()isset</code> على عناصر المصفوفة:
<syntaxhighlight lang="php">
<syntaxhighlight lang="php">
<?php
<?php


سطر 58: سطر 68:
var_dump(isset($a['hello']));          // FALSE
var_dump(isset($a['hello']));          // FALSE


// The key 'hello' equals NULL so is considered unset
// المفتاح hello
// If you want to check for NULL key values then try:  
// يكافئ القيمة NULL
// لذا سيعد على أنه غير مضبوط
// إذا أردت التحقق من وجود مفاتيح في المصفوفة تشير إلى NULL:
var_dump(array_key_exists('hello', $a)); // TRUE
var_dump(array_key_exists('hello', $a)); // TRUE


// Checking deeper array values
// التحقق من قيم المصفوفات المتشعبة
var_dump(isset($a['pie']['a']));        // TRUE
var_dump(isset($a['pie']['a']));        // TRUE
var_dump(isset($a['pie']['b']));        // FALSE
var_dump(isset($a['pie']['b']));        // FALSE
سطر 68: سطر 80:


?>
?>
</syntaxhighlight>المثال 3: استخدام <code>isset()‎</code> مع فهارس للسلاسل النصية
تغيّر سلوك الدالة <code>isset()‎</code> في الإصدار 5.4 من اللغة عند تمرير فهارس نصية لمحاولة الوصول إلى مكونات السلسلة النصية:<syntaxhighlight lang="php">
<?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']));
?>
</syntaxhighlight>ناتج المثال السابق في PHP 5.3:<syntaxhighlight lang="text">
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
</syntaxhighlight>أما ناتجه في PHP 5.4:<syntaxhighlight lang="php">
bool(false)
bool(true)
bool(true)
bool(true)
bool(false)
bool(false)
</syntaxhighlight>
</syntaxhighlight>
== ملاحظات ==
الدالة <code>isset()‎</code> تعمل مع المتغيرات فقط، وتمرير أي شيء آخر سيؤدي إلى إطلاق خطأ parse error. يمكنك التحقق من ضبط [[PHP/Constants|الثوابت]] باستخدام الدالة <code>[[PHP/Function/defined|defined()‎]]</code>.
لما كانت الدالة <code>isset()‎</code> تعد بنيةً من بنى اللغة (language construct) وليست دالةً (function)، فلا يمكننا استخدام «<nowiki/>[[PHP/Functions/variable-functions|الدوال المتغيرة]]» (variable functions).
عند استخدام <code>isset()‎</code> على خاصياتٍ تابعةٍ لكائنٍ لكننا لا نستطيع الوصول إليها، فسوف تستدعى الدالة زائدة التحميل <code>[[PHP/OOP/magic|‎__isset()]]</code>‎ إن كانت معرفةً.
== انظر أيضًا ==
* <code>[[PHP/Function/empty|()empty]]</code>: تحديد ما إذا كان المتغير فارغًا.
* <code>[[PHP/Function/unset|unset()‎]]</code>: إلغاء تعريف المتغير.
* <code>[[PHP/Function/defined|defined()‎]]</code>: التحقق إن كان الثابت المعطى موجودًا.
* <code>[[PHP/Function/array-key-exists|array_key_exists()‎]]</code>: التحقق إن كان فهرسٌ ما موجودًا في المصفوفة.
* <code>[[PHP/Function/count|()count]]</code>: حساب عناصر المصفوفة.
* <code>[[PHP/Function/strlen|()strlen]]</code>: إعادة طول سلسلةٍ نصيةٍ.
* <code>[[PHP/Function/is-null|is_null()‎]]</code>: تحديد إذا كان المتغير NULL.
== مصادر ==
* [http://php.net/manual/en/function.isset.php صفحة الدالة isset في توثيق PHP الرسمي].

مراجعة 04:32، 10 مارس 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.

مصادر