الفرق بين المراجعتين ل"PHP/type juggling"

من موسوعة حسوب
< PHP
اذهب إلى التنقل اذهب إلى البحث
ط (استبدال النص - 'PHP/Types/object' ب'PHP/object')
ط (نقل عبد اللطيف ايمش صفحة PHP/Types/type-juggling إلى PHP/type juggling: إعادة هيكلة التوثيق)
 
(4 مراجعات متوسطة بواسطة نفس المستخدم غير معروضة)
سطر 13: سطر 13:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
إذا بدا لك آخر مثالين في المثال السابق غريبين، فاطّلع على قسم [[PHP/Types/string|تحويل السلاسل النصية إلى أعداد]] (String conversion to numbers).
+
إذا بدا لك آخر مثالين في المثال السابق غريبين، فاطّلع على قسم [[PHP/string|تحويل السلاسل النصية إلى أعداد]] (String conversion to numbers).
  
لفرض تقدير قيمة المتغير بنوع معين، فاطّلع على قسم [[#تحويل الأنواع|تحويل الأنواع]] (Type casting) أدناه، ولتغيير نوع المتغير، فانظر صفحة الدالة <code>[[PHP/Function/settype|settype()‎]]</code>.
+
لفرض تقدير قيمة المتغير بنوع معين، فاطّلع على قسم [[#تحويل الأنواع|تحويل الأنواع]] (Type casting) أدناه، ولتغيير نوع المتغير، فانظر صفحة الدالة <code>[[PHP/settype|settype()‎]]</code>.
  
لتجربة الأمثلة في هذا القسم، استخدم الدالة <code>[[PHP/Function/var-dump|var_dump()‎]]</code>.
+
لتجربة الأمثلة في هذا القسم، استخدم الدالة <code>[[PHP/var_dump|var_dump()‎]]</code>.
  
 
ملاحظة: لم يتم تعريف سلوك تحويل المصفوفة حتى الآن.
 
ملاحظة: لم يتم تعريف سلوك تحويل المصفوفة حتى الآن.
سطر 29: سطر 29:
 
?>  
 
?>  
 
</syntaxhighlight>
 
</syntaxhighlight>
راجع قسم [[PHP/Types/string|الوصول إلى أحرف السلاسل النصية]] (String access by character) للمزيد من المعلومات.
+
راجع قسم [[PHP/string|الوصول إلى أحرف السلاسل النصية]] (String access by character) للمزيد من المعلومات.
  
 
== تحويل الأنواع ==
 
== تحويل الأنواع ==
سطر 45: سطر 45:
 
* <code>(bool)</code> أو <code>(boolean)</code> – تحويل إلى [[PHP/boolean|قيمة منطقية]]
 
* <code>(bool)</code> أو <code>(boolean)</code> – تحويل إلى [[PHP/boolean|قيمة منطقية]]
 
* <code>(float)</code> أو <code>(double)</code> أو <code>(real)</code> – تحويل إلى [[PHP/float|عدد عشري]]
 
* <code>(float)</code> أو <code>(double)</code> أو <code>(real)</code> – تحويل إلى [[PHP/float|عدد عشري]]
* <code>(string)</code> – تحويل إلى [[PHP/Types/string|سلسلة نصية]]
+
* <code>(string)</code> – تحويل إلى [[PHP/string|سلسلة نصية]]
 
* <code>(array)</code> – تحويل إلى [[PHP/array|مصفوفة]]
 
* <code>(array)</code> – تحويل إلى [[PHP/array|مصفوفة]]
 
* <code>(object)</code> – تحويل إلى [[PHP/object|كائن]]
 
* <code>(object)</code> – تحويل إلى [[PHP/object|كائن]]
سطر 86: سطر 86:
 
* [[PHP/integer|التحويل إلى أعداد صحيحة]]
 
* [[PHP/integer|التحويل إلى أعداد صحيحة]]
 
* [[PHP/float|التحويل إلى أعداد عشرية]]
 
* [[PHP/float|التحويل إلى أعداد عشرية]]
* [[PHP/Types/string|التحويل إلى سلاسل نصية]]
+
* [[PHP/string|التحويل إلى سلاسل نصية]]
 
* [[PHP/array|التحويل إلى مصفوفات]]
 
* [[PHP/array|التحويل إلى مصفوفات]]
 
* [[PHP/object|التحويل إلى كائنات]]
 
* [[PHP/object|التحويل إلى كائنات]]
* [[PHP/Types/resource|التحويل إلى موارد]]
+
* [[PHP/resource|التحويل إلى موارد]]
 
* [[PHP/null|التحويل إلى NULL]]
 
* [[PHP/null|التحويل إلى NULL]]
 
* [[PHP/Types/comparisons|جداول مقارنة الأنواع]]
 
* [[PHP/Types/comparisons|جداول مقارنة الأنواع]]

المراجعة الحالية بتاريخ 03:50، 4 أبريل 2018

لا تطلب PHP (أو تدعم) التصريح عن نوع المتغير عند تعريفه، لأنه نوعه يُحدَّد حسب السياق الذي سيستخدم هذا المتغير فيه. وهذا يعني أنَّه إذا أُسنِدَت قيمة سلسلة نصية إلى المتغير ‎$var، فإن نوع المتغير سيكون سلسلة نصية، وإذا أُسنِد عددٌ صحيحٌ، فيصبح نوع المتغير عددًا صحيحًا.

ومثال ذلك، معامل الضرب *، إذا استعملناه على قيمتين وكانت إحدى تلك القيمتين عددًا عشريًا فستُعدّ كلا القيمتين على أنهما عددٌ عشريٌ، وكذلك ناتج تلك العملية، ولاحظ أن هذا لا يغير نوع العامل نفسه، بل يغير طريقة تقدير قيمة التعابير الحسابية.

<?php
$foo = "1";  // سلسلة نصية
$foo *= 2;   // عدد صحيح
$foo = $foo * 1.3;  // عدد عشري
$foo = 5 * "10 Little Piggies"; // عدد صحيح قيمته 50
$foo = 5 * "10 Small Pigs";     // عدد صحيح قيمته 50
?>

إذا بدا لك آخر مثالين في المثال السابق غريبين، فاطّلع على قسم تحويل السلاسل النصية إلى أعداد (String conversion to numbers).

لفرض تقدير قيمة المتغير بنوع معين، فاطّلع على قسم تحويل الأنواع (Type casting) أدناه، ولتغيير نوع المتغير، فانظر صفحة الدالة settype()‎.

لتجربة الأمثلة في هذا القسم، استخدم الدالة var_dump()‎.

ملاحظة: لم يتم تعريف سلوك تحويل المصفوفة حتى الآن.

بالإضافة إلى ذلك، لمّا كانت php تدعم الفهرسة في السلاسل النصية، يمكنك استخدام نفس صياغة فهرسة المصفوفة، فهذا المثال يعمل على جميع إصدارات PHP:

<?php
$a    = 'car'; // سلسلة نصية
$a[0] = 'b';   // ما تزال سلسلةً نصيةً
echo $a;       // bar
?>

راجع قسم الوصول إلى أحرف السلاسل النصية (String access by character) للمزيد من المعلومات.

تحويل الأنواع

يعمل تحويل الأنواع في PHP بنفس الطريقة المتبعة في لغة السي C، وهي وضع اسم النوع المطلوب يكتب بين قوسين قبل المتغير الذي يراد تحويله.

<?php
$foo = 10;   // عدد صحيح
$bar = (boolean) $foo;   // قيمة منطقية
?>

أنواع التحويل المسموح بها:

تمت إضافة دعم التحويل إلى القيم الثنائية (binary) إضافةً إلى البادئة b منذ الإصدار 5.2.1.

لاحظ أنه يُسمَح بالفراغات ومسافات الجدولة (tab) داخل الأقواس، وبالتالي يكون التعبيران الآتية مكافئين لبعضها بعضًا:

<?php
$foo = (int) $bar;
$foo = ( int ) $bar;
?>

يمكن تحويل السلاسل النصية المحرفية والمتغيرات، إلى سلاسل نصية ثنائية بهذه الطريقة:

<?php
$binary = (binary) $string;
$binary = b"binary string";
?>

ملاحظة: بدلًا من تحويل متغير إلى سلسلة نصية، يمكن وضع المتغير ضمن علامات اقتباس مزدوجة:

<?php
$foo = 10;            // عدد صحيح
$str = "$foo";        // سلسلة نصية
$fst = (string) $foo; // سلسلة نصية أيضًا

"they are the same"
if ($fst === $str) {
    echo "they are the same";
}
?>

عند التحويل بين أنواعٍ معيّنة، فلا يمكنك معرفة ما الذي سيحدث تمامًا، للمزيد من المعلومات حول ذلك راجع الأقسام التالية:

مصادر