সংজ্ঞা এবং ব্যবহার
PHP একটি ডাইনামিক্যালি টাইপড (dynamically typed) ল্যাঙ্গুয়েজ। PHP-তে ভেরিয়েবলের এক্সপ্লিসিট টাইপ ডিক্লেয়ারেশন নয় চাওয়া হয় নেই সমর্থিত হয়। C, C++, Java-এর বিপরীতে, PHP ভেরিয়েবলের টাইপ নির্ভর করে এসাইন করা মানের ওপর, অন্যদিকে নয়। আরও, একটি ভেরিয়েবল যদি ভিন্ন টাইপের মান এসাইন করা হয়, তবে এর টাইপ ও পরিবর্তন হয়। ভেরিয়েবলের ডাইনামিক্যালি পরিবর্তনশীল মান হ্যান্ডেল করার PHP-এর এই পদ্ধতিকে টাইপ জাগলিং (Type Juggling) বলা হয়।
$var="Hello"; // ভেরিয়েবল স্ট্রিং টাইপ $var=100; // একই ভেরিয়েবল এখন ইন্টিজার
এক্সপ্রেশন ক্যালকুলেশনের সময়ও টাইপ জাগলিং ঘটে। নিচের উদাহরণে, ডিজিটস ধারণকারী একটি স্ট্রিং ভেরিয়েবল যোগ অপারেশনের জন্য অটোমেটিক্যালি ইন্টিজারে কনভার্ট হয়—
উদাহরণ
<?php $var1=100; $var2="100"; $var3=$var1+$var2; var_dump($var3); ?>
আউটপুট
এটি নিচের ফলাফল দেবে—
int(200)
যদি কোনো স্ট্রিং ডিজিট দিয়ে শুরু হয়, তবে ট্রেলিং নন-নামেরিক ক্যারেক্টারগুলো ক্যালকুলেশনের সময় উপেক্ষা করা হয়। তবে PHP পার্সার একটি নোটিশ ইস্যু করে—
উদাহরণ
<?php $var1=100; $var2="100 days"; $var3=$var1+var2; var_dump($var3); ?>
আউটপুট
এটি নিচের ফলাফল দেবে—
PHP Notice: A non well formed numeric value encountered in ... int(200)
টাইপ কাস্টিং (Type casting) একটি ভেরিয়েবলকে নির্দিষ্ট টাইপে বাধ্য করে। নিচের স্ক্রিপ্টে বিভিন্ন টাইপ কাস্ট অপারেটরের উদাহরণ দেওয়া হয়েছে—
উদাহরণ
<?php $var1=100; $var2=(boolean)$var1; $var3=(string)$var1; $var4=(array)$var1; $var5=(object)$var1; var_dump($var2, $var3, $var4, $var5); ?>
আউটপুট
এটি নিচের ফলাফল দেবে—
bool(true) string(3) "100" array(1) { [0]=> int(100) } object(stdClass)#1 (1) { ["scalar"]=> int(100) }
ভেরিয়েবলকে স্ট্রিংে কাস্ট করা ডবল কোটেড স্ট্রিংয়ের মধ্যে রাখেও করা যায়—
উদাহরণ
<?php $var1=100.50; $var2=(string)$var1; $var3="$var1"; var_dump($var2, $var3); ?>
আউটপুট
এটি নিচের ফলাফল দেবে—
string(5) "100.5" string(5) "100.5"