8. التلاعب بالأنواع (Type Juggling) وتحويل الأنواع (Type Casting)
PHP هي لغة ضعيفة النوع (loosely typed)، مما يعني أنها لا تتطلب تصريحات صريحة للنوع وغالبًا ما تقوم بتحويل (التلاعب) بالأنواع تلقائيًا عند الضرورة.
التلاعب بالأنواع (التحويل التلقائي)
عندما تصادف PHP عاملاً يتوقع نوعًا معينًا، فإنها تحاول تحويل المعاملات.
php
<?php $a = 5; // عدد صحيح $b = "10"; // نص $c = "Hello"; // نص // تتلاعب PHP بالنص '10' ليصبح عددًا صحيحًا للعمليات الحسابية echo "Result 1: " . ($a + $b); // الإخراج: 15 // عند إجراء عمليات حسابية على نصوص غير رقمية، تتعامل معها PHP على أنها 0 echo "<br>Result 2: " . ($a + $c); // الإخراج: 5 (5 + 0) // التلاعب بالمقارنة (خطير!) if (0 == "hello") { echo "<br>إنهما متساويان بشكل فضفاض!"; // الإخراج: إنهما متساويان بشكل فضفاض! } // لماذا؟ تحول PHP 'hello' إلى عدد صحيح 0 للمقارنة. ?>تحويل الأنواع (التحويل الصريح)
لتجنب التلاعب غير المتوقع، يمكنك تحويل متغير صراحةً إلى نوع مختلف باستخدام الأقواس واسم النوع المطلوب.
| نوع التحويل | الوصف |
|---|---|
(int) or (integer) | يحول إلى عدد صحيح |
(float) or (double) | يحول إلى عدد عشري |
(string) | يحول إلى نص |
(bool) or (boolean) | يحول إلى منطقي |
php
<?php $num_str = "45.99"; $integer_val = (int) $num_str; echo "عدد صحيح: " . $integer_val; // الإخراج: 45 $float_val = (float) $integer_val; echo "<br>عدد عشري: " . $float_val; // الإخراج: 45.0 ?>