Data Types
আমাদের দৈনন্দিন জীবনে বিভিন্ন ধরনের ডেটা বা তথ্য উপাও ব্যবহার করে থাকি । যেমনঃ
আজ সকালে ভার্সিটিতে গিয়ে
রাহিমারকাছে মিথ্যা কথা বলে ২০০০ টাকা ধার করলাম।
এই বাক্যটিতে কয়েক ধরনের ডেটা আছে ,
- ২০০০
- মিথ্যা
- স্টিং
প্রত্যেক প্রোগ্রামিং ভাষাতেই বিভিন্ন ধরনের ডেটা তথা বিভিন্ন ধরনের ডেটা টাইপ আছে । পিএসপিতেও এরকম ডেটা টাইপ আছ।
কোনটা টেক্সট, কোনটা সংখ্যা, সংখ্যার ভিতরে আবার কোনটা পূর্ণ সংখ্যা, কোনটা ভগ্নাংশ - এই সব ডাটার একেকটা একেক রকম। এখান থেকেই মূলত ডাটা টাইপ কনসেপ্ট এর উৎপত্তি।
পিএইচপিতে আমরা কোন ভ্যারিয়েবল এর টাইপ জানতে gettype() ফাংশনটি ব্যবহার করতে পারি । যেমন:
<?php
$age = 23;
echo gettype($age); // integer
পিএইচপি তে বহুল ব্যবহৃত ডাটা টাইপ গুলো হলো:
- String
- Integer
- Float (floating point numbers - also called double)
- Boolean
- Array
- Object
- NULL
- Resource
String
স্ট্রিংস হলো অনেকগুলো ক্যারেক্টারের সমষ্টি । পিএইচপিতে এখনো ইউনিকোড এর সাপোর্ট আসে নি । স্ট্রিং ভ্যারিয়েবল তৈরি করতে হলে সাধারনত ডাবল কিংবা সিঙ্গল কোট ব্যবহার করা হয় ।
<?php
$name = "King Rayhan";
$versity = 'North South University';
Integer
ইন্টিজার ব্যবহার করি আমরা পূর্ণ সংখ্যা প্রকাশ করার জন্য । এই পূর্ণ সংখ্যা ধনাত্বক বা ঋণাত্বক হতে পারে । যেমন: কারো বয়স,
<?php
$age = 75;
লক্ষ্যনীয় যে ইন্টিজার ডেসিম্যাল, অক্টাল, হেক্সাডেসিম্যাল কিংবা বাইনারি ফরমাটেও প্রকাশ করা যায়:
<?php
$a = 1234; // ডেসিম্যাল
$a = -123; // ঋণাত্বক
$a = 0123; // অক্টাল, ডেসিম্যালে কনভার্ট করলে পাবো ৮৩
$a = 0x1A; // হেক্সাডেসিম্যাল, ডেসিম্যালে মান হবে ২৬
$a = 0b11111111; // বাইনারী, ডেসিম্যালে মান হবে ২৫৫
(উদাহরণটি পিএইচপি ম্যানুয়াল থেকে নেওয়া, কমেন্ট বাংলায় অনুবাদ করা)
ফ্লোটিং পয়েন্ট বা ডাবল
ভগ্নাংশ কিংবা দশমিক সংখ্যা প্রকাশ করার জন্য আমরা ফ্লোটিং পয়েন্ট টাইপ ব্যবহার করি । এটাকে ডাবল কিংবা রিয়াল নাম্বার ও বলা হয় ।
<?php
$temperature = 30.45;
Boolean
বুলিয়ান টাইপ ব্যবহার করে আমরা কোন কিছু সত্য না মিথ্যা তা প্রকাশ করে থাকি । আরেকটু গভীরভাবে চিন্তা করলে আমরা দেখবো যখন কোন ভ্যারিয়েবল ঠিক বিপরীতধর্মী দুইটা ভ্যালুর যে কোন একটা গ্রহন করে তখন আমরা সেটাকে সচারচর বুলিয়ান টাইপ দিয়ে প্রকাশ করি । +
পিএইচপিতে বুলিয়ান টাইপের ভ্যালু হতে পারে TRUE অথবা FALSE ।
<?php
$isMarried = FALSE;
$isAlive = TRUE;
Array
এ্যারে হলো একটি তালিকা । যেখানে একটি ইনডেক্স এর বিপরীতে আমরা একটি ভ্যালু সংরক্ষণ করি । এ্যারে তৈরি করার জন্য আমরা বিল্ট ইন array কন্সট্র্যাক্ট ব্যবহার করি । ইনডেক্স এর বিপরীতে ভ্যালু ডিফাইন করার জন্য আমরা => সিম্বল ব্যবহার করি ।
<?php
$array = array(
"foo" => "bar",
"bar" => "foo",
);
এখানে $array একটি এ্যারে যার foo ইনডেক্স বা কি এর ভ্যালু bar এবং bar এর ভ্যালু foo । উদাহরণটি পিএইচপি ম্যানুয়াল থেকে নেওয়া ।
লক্ষ্যনীয় বিষয়: এ্যারে এর ইনডেক্স বা কি এর ভ্যালু শুধুমাত্র স্ট্রিং বা ইন্টিজার হবে । তবে ভ্যালু যে কোন টাইপের হতে পারে । আমরা চাইলে, ইনডেক্স এর ভ্যালু স্কিপ করতে পারতাম । সেক্ষেত্রে পিএইচপি নিজে থেকেই ইনডেক্স এর ভ্যালু হিসেবে ক্রমিক সংখ্যা ব্যবহার করতো ।
<?php
$list = array('a', 'c', 3, 'wow', 5);
এখানে এই এ্যারের ইনডেক্সগুলো হবে - 0, 1, 2, 3, 4 - মনে রাখতে হবে, এই ইনডেক্স হলো জিরো বেইড, অর্থাৎ ইনডেক্স গননা শুরু হয় জিরো থেকে । প্রথম আইটেমের ইনডেক্স তাই জিরো হয়, যে কোন আইটেমের ইনডেক্স হয় তার নিউমেরিক্যাল পজিশন থেকে এক কম। পিএইচপি 5.4 থেকে এ্যারে ডিফাইন করার জন্য শর্টহ্যান্ড ব্যবহার করা যায়:
<?php
$array = [
"foo" => "bar",
"bar" => "foo",
];
$list = ['a', 'z', 2, 10];
এখানে আমরা array এর পরিবর্তে [ এবং ] এর মধ্যে কি-ভ্যালু ডিফাইন করি ।
পিএইচপির এ্যারে ডাটা টাইপটি একই সাথে এ্যারে, লিস্ট, ডিকশনারী, স্ট্যাক, কিউ, কালেকশান প্রভৃতির কাজ করতে পারে । এ্যারে নিয়ে পরবর্তিতে বিস্তারিত আলোচনা করা হবে।
অবজেক্ট টাইপ
পিএইচপি ক্লাস থেকে new কিওয়ার্ড ব্যবহার করে অবজেক্ট ইন্সট্যান্স তৈরি করা যায় । অবজেক্ট সম্পর্কে আরো বিস্তারিত আমরা অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং চ্যাপ্টারে দেখবো ।
নাল টাইপ
যখন কোন ভ্যারিয়েবলের কোন ভ্যালু থাকে না তখন সেটা নাল টাইপ এর হয় । এই টাইপের একমাত্র গ্রহনযোগ্য ভ্যালু হলো - null - যার মানে ঐ ভ্যারিয়েবল এর কোন ভ্যালু নেই ।
টাইপ কনভার্শন
অটোমেটিক কনভার্শন
পিএইচপিতে আমরা ভ্যারিয়েবল ডিক্লেয়ার করার সময় এর টাইপ নির্ধারণ করে দিতে পারি না । ভ্যারিয়েবল এর ভ্যালুর উপর নির্ভর করে পিএইচপি নিজে থেকেই ডাটা টাইপ নির্বাচন করে নেয় । যেমন $var এর ভ্যালু হিসেবে যদি আমরা hello world পাস করি, তাহলে $var হবে স্ট্রিং, পরবর্তীতে যদি $var এর ভ্যালু হিসেবে 23 হয় তবে সেটি হবে ইন্টিজার ।
পিএইচপি কনটেক্সট অনুযায়ী ভ্যারিয়েবল এর টাইপ স্বয়ংক্রিয়ভাবে পরিবর্তন করে নেয় । যেমন, আমরা যখন যোগ করি তখন যদি উভয় পাশই ডাবল ভ্যালু হয় তখন রেজাল্ট ও হবে ডাবল । কিন্তু যে কোন একটি যদি ডাবল না হয় তাহলে রেজাল্ট হবে ইন্টিজার ।
এসব ক্ষেত্রে মূল ভ্যারিয়েবল এর টাইপ পরিবর্তন হয় না কিন্তু ফলাফলের পরিবর্তন হয় । পিএইচপির এই অটোমেটিক টাইপ কনভার্শন এর ব্যাপারে খেয়াল রাখা জরুরী । নাহলে অনাকাঙ্ক্ষিত ফলাফল পাওয়া অসম্ভব কিছুই না ।
ম্যানুয়াল টাইপ কনভার্শন
ম্যানুয়ালি টাইপ কনভার্ট করতে আমরা settype() ফাংশনটি ব্যবহার করি । এটি ঐ ভ্যারিয়েবল এর টাইপ এবং ভ্যালু দুটোই পরিবর্তন করতে পারে ।
<?php
$age = 23;
$name = "masnun";
settype($age, "string");
settype($name, "integer");
var_dump($age);
var_dump($name);