PHP نیازمند (یا پشتیبانی) تعریف نوع نیست در هنگان تعریف متغیر نیست. یک نوع متغیر در متن استفاده متغیر مشخص خواهد شد. میتوان گفت یک متغیر string به $var منتصب میگردد $var یک string خواهد شد. اگر یک integer به $var منتصب گردد یک integer خواهد شد.
یک نمونه از تبدیل نوع خودکار PHP عملگر '+' است. اگر عملوند float هر دو عملوند بصورت float ارزیابی خواهند شد و نتیجه float خواهد بود. در غیر این صورت عملوندها بصورت integer تفسیر شده و نتیجه نیز یک integer خواهد بود. توجه کنید این فرایند نوع عملوندها را تغییر نخواهد داد; تنها تغییر در چگونگی ارزیابی عملوندها و نوع عبارت است.
<?php
$foo = "0"; // $foo is string (ASCII 48)
$foo += 2; // $foo is now an integer (2)
$foo = $foo + 1.3; // $foo is now a float (3.3)
$foo = 5 + "10 Little Piggies"; // $foo is integer (15)
$foo = 5 + "10 Small Pigs"; // $foo is integer (15)
?>
اگر این دو نمونه برای شما عجیب هستند تبدیل رشته به عدد را ببینید.
برای مجبور نمودن یک متغیر برای ارزیابی شدن در یک نوع خاص بخش تبدیل نوع را ببینید. برای تغییر نوع متغیر تابع settype() را ببینید.
برای آزمایش هر یک از نمونههای این بخش از تابع var_dump() استفاده کنید.
Note:
رفتار یک تغییر خودکار array هماکنون تعریف نشده است.
با وجود پشتیبانی اندیس string از طریق آفستها همانند دستور array نمونه زیر در همه نسخههای PHP درست است:
<?php
$a = 'car'; // $a is a string
$a[0] = 'b'; // $a is still a string
echo $a; // bar
?>بخش با عنوان دسترسی به کاراکترهای رشته را برای اطلاعات بیشتر ببینید.
تبدیل نوع در PHP همانند C عمل میکند: نام نوع دلخواه در داخل پرانتز نوشته میشود و قبل از متغیر تبدیل شده قرار میگیرد.
<?php
$foo = 10; // $foo is an integer
$bar = (boolean) $foo; // $bar is a boolean
?>
تبدیلات زیر مجاز است:
تبدیل (binary) و پیشوند b در PHP 5.2.1 اضافه شدهاند.
توجه کنید tab و فاصله در داخل پرانتزها میتواند قرار گیرد بنابراین عملکرد زیر مشابه است:
<?php
$foo = (int) $bar;
$foo = ( int ) $bar;
?>
تبدیل string و متغیرها به string باینری:
<?php
$binary = (binary)$string;
$binary = b"binary string";
?>
Note:
به جای تبدیل متغیرها به یک string میتوان متغیرها را در "" قرار داد.
<?php
$foo = 10; // $foo is an integer
$str = "$foo"; // $str is a string
$fst = (string) $foo; // $fst is also a string
// This prints out that "they are the same"
if ($fst === $str) {
echo "they are the same";
}
?>
ممکن است عملیات انجام شده هنگام تبدیل دو نوع مشخص نباشد. برای اطلاعات بیشتر بخشهای زیر را ببینید: