আগের পাঠে PHP-কে স্বয়ংক্রিয়ভাবে টাইপ রূপান্তর করতে দেখেছেন। টাইপ কাস্টিং মানে সেই রূপান্তরটা নিজে, ইচ্ছাকৃতভাবে করা, যাতে ফলাফল PHP-এর নিজস্ব নিয়মের উপর নির্ভর না করে অনুমানযোগ্য থাকে।
একটি মানকে কাস্ট করতে তার সামনে বন্ধনীতে টার্গেট টাইপটি বসান:
<?php
$price = "19.99";
$number = (float) $price; // 19.99 as an actual float
$whole = (int) $price; // 19 (int cast truncates, doesn't round)
$text = (string) 42; // "42"
$flag = (bool) 1; // true
?>খেয়াল করুন int-এ কাস্ট করলে এটি রাউন্ড না করে truncate করে — (int) 19.99 দেয় 19, 20 নয়। সত্যিই রাউন্ডিং প্রয়োজন হলে আগে round() ব্যবহার করুন।
PHP নামযুক্ত কিছু ফাংশনও দেয় যা একই কাজ করে আর প্রেক্ষাপটে একটু বেশি পরিষ্কারভাবে পড়া যায়:
<?php
$n = intval("42abc"); // 42 — reads leading digits, ignores the rest
$f = floatval("3.14"); // 3.14
$s = strval(100); // "100"
?>যেকোনো কিছুকে bool-এ কাস্ট করা একটি নির্দিষ্ট নিয়ম মেনে চলে যা মুখস্থ রাখা ভালো, কারণ PHP প্রতিটি if স্টেটমেন্টের ভেতরে ঠিক এই একই লজিক প্রয়োগ করে:
| মান | bool-এ কাস্ট হয় এভাবে |
|---|---|
| 0, 0.0, "0" | false |
| "" (খালি স্ট্রিং) | false |
| [] (খালি array) | false |
| null | false |
| অন্য যেকোনো সংখ্যা বা অ-খালি স্ট্রিং | true |
"0" বনাম "0.0" ফাঁদ
স্ট্রিং "0" falsy, কিন্তু স্ট্রিং "0.0" truthy — এটি একটি অ-খালি স্ট্রিং যাতে কাকতালীয়ভাবে "0.0" অক্ষরগুলো আছে। এই ঠিক এই ফাঁদটাই আসল PHP কোডে সত্যিকারের বাগ তৈরি করেছে; সন্দেহ থাকলে, truthiness-এর উপর নির্ভর না করে সরাসরি তুলনা করুন ($value === "0")।