Menu
flag Ar iconالعربيةdown icon

تحويل الأنواع في PHP: نص إلى عدد بـ intval() و(int)

حوّل نص PHP إلى عدد صحيح بـ (int) $str أو intval($str)، فـ (int) "42" تساوي 42 و(int) "12abc" تساوي 12. تعلّم التحويل إلى int وfloat وbool وstring وarray، والنصوص الرقمية، وintval مع أساس، وsettype، وكيف تتحقق من المدخلات بدلًا من الحصول على 0 بصمت.

تحتوي هذه الصفحة على محررات قابلة للتشغيل - حرّر، شغّل، وشاهد النتيجة فوراً.

لتحويل قيمة إلى نوع آخر، ضع النوع بين قوسين قبلها: (int) "42" يعطي العدد الصحيح 42. وتفعل صيغة الدالة intval("42") الشيء نفسه. التحويل لا يفشل أبدًا: النص الذي ليس عددًا يصبح 0، والنص الذي يبدأ بأرقام لا يُبقي إلا تلك الأرقام.

التحويلات الموجودة في PHP هي (int) و(float) و(string) و(bool) و(array) و(object). ولكل منها دالة أيضًا: intval() وfloatval() وstrval() وboolval().

نص إلى عدد صحيح: ما تعيده (int) وintval()

تقرأ PHP الأرقام من بداية النص، بعد تخطي المسافات البيضاء في أوله، وتتوقف عند أول محرف لا يناسب عددًا. صيغة الأس تُعد عددًا، أما البادئة 0x فلا.

لاحظ أن "12.7" تصبح 12: التحويل إلى عدد صحيح يقطع الكسر ولا يقرّب. ولا تطبع (int) ولا intval() أي تحذير هنا، مهما كان المدخل.

intval() مع أساس

تقرأ intval($value, $base) النص بنظام عددي آخر. ومع الأساس 0، تنظر PHP إلى البادئة: 0x للست عشري، و0b للثنائي، و0 في البداية للثماني.

عدد عشري إلى صحيح: قطع لا تقريب

تحذف (int) كل ما بعد الفاصلة العشرية، باتجاه الصفر. قرّب أولًا إذا أردت أقرب عدد صحيح، وانتبه إلى الأقواس:

الزوج الأخير هو فخ الأعداد العشرية الكلاسيكي: تُخزَّن (0.1 + 0.7) * 10 على أنها 7.999999...، فيعطي القطع 7. والتقريب أولًا يعطي 8. تشرح صفحة الرياضيات الدوال round وfloor وceil.

التحويل إلى bool وstring وarray

عند التحويل إلى bool، لا يصبح false إلا عدد قليل من القيم: 0 و0.0 و"" و"0" وnull و[]. وكل ما عداها true، بما في ذلك "0.0" و" " و"false".

وعند التحويل إلى نص، تصبح true النص "1"، بينما تصبح false وnull كلتاهما "". وتحذف الأعداد العشرية .0 الأخيرة، وتستخدم الأعداد الكبيرة جدًا أو الصغيرة جدًا صيغة الأس.

تحويل مصفوفة إلى نص لا يربط عناصرها. هذا يطبع Tags: Array:

<?php
$tags = ["php", "web"];
echo "Tags: " . $tags;

وتضيف PHP تحذيرًا:

Warning: Array to string conversion in /home/index.php on line 3

استخدم implode(", ", $array) أو json_encode($array) لتحويل مصفوفة إلى نص.

كل التحويلات في لمحة

اختر قيمة لترى ما تعيده intval و(bool) وstrval وis_numeric وgettype لها. حُسبت كل خلية بواسطة PHP 8.3.

intval و(bool) وstrval وis_numeric لكل قيمة من قيم $x
Point at or tap a cell to read it as PHP.
$xintvalboolstrvalis_numericgettype
"10"
"1abc"
"abc"
""
" "
"0"
"0.0"
"1e1"
"010"
1.5
true
false
null
[]
[1, 2]
Every cell computed by PHP 8.3.19.

النصوص الرقمية والتحويل التلقائي

النص الرقمي نص يبدو كعدد: "12" و"-3.5" و"1e3"، مع مسافات بيضاء اختيارية حوله. تحوّل PHP هذه النصوص تلقائيًا في العمليات الحسابية، وتخبرك is_numeric() ما إذا كان النص كذلك.

ما زالت "12abc" + 1 تعطي 13، لكن PHP 8 تطبع Warning: A non-numeric value encountered، وتطلق "abc" + 1 الخطأ TypeError. حوّل أو تحقق قبل إجراء عمليات حسابية على مدخلات المستخدم.

settype() وgettype()

تغيّر settype() نوع المتغير في مكانه، وتبلّغ gettype() عنه. وتعيد get_debug_type() الأسماء الأقصر التي تراها في رسائل الأخطاء (int وfloat وstring).

يستخدم معظم الكود التحويل الصريح ($value = (int) $value;) بدلًا من ذلك، لأنه أقصر ومعناه واحد.

تحقق من المدخلات بدلًا من تحويلها

لا ترفض (int) أبدًا، لذا تصبح (int) "abc" بصمت 0 وتصبح (int) "5 apples" القيمة 5. لمدخلات النماذج، استخدم filter_var مع FILTER_VALIDATE_INT: تعيد العدد الصحيح أو false.

قارن النتيجة بـ === false، لأن 0 عدد صحيح صالح و== false سترفضه. تعرض صفحة filter_var النطاقات وأدوات التحقق الأخرى.

الأسئلة الشائعة

كيف أحوّل نصًا إلى عدد صحيح في PHP؟

استخدم (int) $str أو intval($str)، فكلاهما يعطي النتيجة نفسها في الأساس 10. (int) "42" تساوي 42، و(int) "12abc" تساوي 12، و(int) "abc" تساوي 0. ولرفض المدخلات التي ليست عددًا صحيحًا، استخدم filter_var($str, FILTER_VALIDATE_INT)، التي تعيد false بدلًا من التخمين.

ما الفرق بين intval() و(int) في PHP؟

في الأساس 10 يعيدان النتيجة نفسها. وتأخذ intval() أيضًا أساسًا: intval('ff', 16) تساوي 255، ومع الأساس 0 تقرأ البادئات مثل 0x و0b و0 في البداية للنظام الثماني. ولأن intval دالة، يمكن تمريرها أيضًا كدالة رد نداء، كما في array_map('intval', $values).

ماذا تعيد (bool) "0" في PHP؟

false. النص "0" إحدى القيم الخاطئة منطقيًا في PHP، مع "" و0 و0.0 وnull و[]. وكل نص آخر true، بما في ذلك "0.0" و" " و"false".

كيف أحوّل عددًا إلى نص في PHP؟

استخدم (string) $n أو strval($n) أو ضعه داخل نص: "$n". (string) 3.0 تساوي "3"، ولعدد ثابت من المنازل العشرية استخدم number_format($n, 2) أو sprintf('%.2f', $n).

رسم توضيحي للغات البرمجة في Coddy

تعلّم البرمجة مع Coddy

ابدأ الآن