পিএইচপি ডেটা টাইপ টিউটোরিয়াল (PHP Data Type Tutorial in Bangla)
প্রতিটি
প্রোগ্রামিং ল্যাংগুয়েজে ডেটা টাইপ আছে। একটা ভেরিয়েবলে কি ধরনের ডেটা আছে
সেটা চিনতে হয় যেমন $x = 9; অর্থ্যাৎ x এর মান এখন ৯ এবং ৯ একটি
পূর্নসংখ্যা। মানটি পূর্নসংখ্যা না হয়ে দশমিকও হতে পারত যেমন ৯.৫৪ বা এরুপ
কিছু অথবা একটি অক্ষরের সারিও হতে পারত যেমন $x = 'webcoachbd' ইত্যাদি।
অর্থ্যাৎ চিনিয়ে দিতে হয় যে তোমার (ভেরিয়েবলের) মধ্যে যে ডেটা টুকু রাখলাম
সেটা একটা পূর্নসংখ্যা বা স্ট্রিং বা দশমিক সংখ্যা (বা যতরকম ডেটা টাইপ
আছে)। সুতরাং $x = 9 এর অর্থ হল $x এখন integer, $x = 'webcoachbd' এর অর্থ
হল $x এখন স্ট্রিং, $x = 5.36 এর অর্থ হল $x এখন floating number ইত্যাদি।
পিএইচপিতে কয়েক ধরনের ডেটা টাইপ বা ধরন আছে। অর্থ্যাৎ পিএইচপি ভেরিয়েবল এ ধরনের বা টাইপের ডেটা নিতে পারে এবং যেকোন অপারেশন করতে পারে। মুলত পিএইচপির ডেটাকে ২ টি বিভাগে ভাগ করা হয়েছে
১. স্কেলার ডেটা টাইপ : এখানে ৪ ধরনের ডেটা টাইপ আছে
ক. boolean বা বুলিয়ান: এ ধরনের ডেটার শুধু ২টি মান থাকতে পারে TRUE অথবা FALSE, পিএইচপিতে অনেক ফাংশন আছে যেগুলি বুলিয়ান রিটার্ন করে। বুলিয়ান ডেটা সাধারনত if কন্ডিশনে ব্যবহার করা হয়। কোন একটা ভেরিয়েবলে বুলিয়ান ডেটা আছে কিনা সেটা দেখার জন্য is_bool() একটি ফাংশন আছে। যেমন
দেখুন $y যখন চেক করেছি তখন is_bool() এর আউটপুট false এসেছে কেননা $y
এর মান বুলিয়ান নয় বরং ৯ অর্থ্যাৎ পূর্নসংখ্যা বা integer. এভাবে যেকোন
ভেরিয়েবল কিংবা ফাংশনের রিটার্ন মান চেক করতে পারেন।
খ. integer বা পূর্নসংখ্যা: পূর্নসংখ্যা তথা দশমিক ছাড়া সংখ্যা হচ্ছে এই ধরনের ডেটা যেমন ৯, ৮, -৬৫, -১ ইত্যাদি হচ্ছে integer ডেটা। is_int() ফাংশন দিয়ে যেকোন ভেরিয়েবলকে চেক করে দেখতে পারেন, যদি পূর্নসংখ্যা (integer) হয় তাহলে TRUE রিটার্ন করবে অন্যথায় FALSE. পূর্নসংখ্যা ধনাত্নক কিংবা ঋনাত্নক হতে পারে এমনকি দশভিত্তিক (decimal- 10 based) ছাড়াও হেক্সাডেসিমাল (১৬-ভিত্তিক), octal (৮-ভিত্তিক), দ্বিমিক (২-ভিত্তিক বা বাইনারি) সংখ্যাও integer হতে পারে। যেমন
আউটপুট
int(1011100)
গ. Float বা দশমিক সংখ্যা: দশমিক সংখ্যা যেমন ৫.২৩৬, ৫.২ ইত্যাদি হচ্ছে float number বা doubles বা real number
আউটপুট
float(5.2054)
সূচকীয় ফরেমেটেও float number লেখা যায় যেমন $x = 2x6e5;
ঘ. String বা অক্ষরের সারি: যেকোন অক্ষর সিঙ্গেল কোট, ডাবল কোটেশন, heredoc এবং nowdoc সিনট্যাক্সের মধ্যে রাখলে সেটা স্ট্রিং যেমন
অবশ্য সব অক্ষর (ক্যারেক্টার) এর সাপোর্ট নেই, সোজা কথা ইউনিকোড
ক্যারেক্টার সাপোর্টেড নয়। পিএইচপি ৭ ভার্সন সামনে আসছে সেখানে ইউনিকোড
ক্যারেক্টারও সাপোর্ট থাকবে।
২. Compound বা মিশ্র ডেটা টাইপ
ক. অ্যারে: পিএইচপি অ্যারে টিউটোরিয়াল (PHP Array )
খ. অবজেক্ট: অবজেক্ট এবং ক্লাস (Object and Class)
এছাড়া আরো দুটি বিশেষ ডেটা টাইপ আছে resource এবং NULL
resource সাধারনত বিভিন্ন ধরনের ডেটা হয়ে থাকে যেমন ডেটাবেসে অপারেশন করে যেসব ডেটা রিটার্ন করে সেগুলি resource ডেটা হিসেবে দেখে। আর NULL হল ফাকা ডেটা। কোন ভেরিয়েবল ডিক্লেয়ার করা হল কিন্তু কোন মান assign করা হলনা তাহলে সেই ভেরিয়েবলটির মান null হয়ে যায়।
টাইপ জাগলিং
যেকোন ল্যাংগুয়েজে যখন একটা ভেরিয়েবলে কিছু নিবেন তখন বলে দিতে হবে যে কোন ধরনের ডেটা এটা (টেকনিকালি এটাকে বলে টাইপ ডিক্লেয়ার করা বা explicit type definition)। শুধু পিএইচপিতে এ কাজটি করতে হয়না। পিএইচপি ইন্জিন ডেটা দেখে নিজে নিজেই বুঝে নেয় যে আপনি কি ধরনের ডেটা দিয়েছেন। এই অটোমেটিক টাইপ চিনে নেয়ার প্রক্রিয়ার নাম "টাইপ জাগলিং"। এটা পিএইচপির একটা শক্তিশালি বৈশিষ্ট্য।
টাইপ কাস্টিং
পিএইচপিতে টাইপ পরিবর্তন করা যায়। এক ডেটা টাইপ থেকে আরেক ডেটা টাইপে বদলে দেয়ার নাম টাইপ কাস্টিং। যে ডেটা টাইপে পরিবর্তন করতে চান সেটার সংকেতটি প্রথম বন্ধনির ভিতর দিয়ে এরপর ডেটা টুকু দিতে। সংকেতসমূহ
(int) পূর্নসংখ্যা করতে চাইলে
(bool) বুলিয়ান করতে চাইলে
(float) দশমিক/double/real সংখ্যা করতে চাইলে
(string) অক্ষরসারি করতে চাইলে
(array) অ্যারে বানাতে চাইলে
(object) অবজেক্ট এ রুপান্তর
(unset) এটা দিলে null হয়ে যাবে।
উদাহরন: যেমন $x = 9; আছে অর্থ্যাৎ এখন পূর্নসংখ্যা (integer) আছে আর আমি চাচ্ছি এটাকে স্ট্রিং বানাবো তখন এর টাইপ কাস্টিং করব এভাবে
আউটপুট
string(1) "9"
যে লাইনে (string) এটা দিয়ে টাইপ কাস্টিং করলাম সেই লাইনটি বাদ দিয়ে var_dump() করুন আউটপুট int(9) এটা দেখাবে।
তদ্রুপ
কেন টাইপ কাস্টিং জরুরি: পিএইচপি দিয়ে ডেটাবেস বা যেকোন ডেটা প্রসেসের সময় ডেটার টাইপ পরিবর্তন করার প্রয়োজন হতে পারে। উদাহরনস্বরুপ আপনার একটি ফর্মে হিডেন মান আছে, ঐ মানটি ধরুন একটা আইডি যেটা integer হিসেবে আপনার লাগবে ডেটাবেসে কোয়েরি করার সময়। এখন ফর্ম সাবমিট করলে মানটি যখন $_REQUEST['hidden_id'] এভাবে বা যেকোনভাবে পিএইচপি পেজে রিসিভ করবেন তখন এটা সাধারনত string হিসেবে আসে, কিন্তু এই স্ট্রিং দিয়ে কোয়েরি করলে ঝামেলা হবে কারন ডেটাবেসে id ফিল্ড রেখেছেন integer হিসাবে। এসব ঝামেলা এড়াতে আপনি যদি পিএইচপিতে মানটি ধরার সময় নিচের মত করে ধরেন তাহলে আপনি নিরাপদ হয়ে গেলেন।
সুতরাং $x এর মান যদি কোনভাবে '9' এরুপ স্ট্রিং আসে তাহলে এটাকে কাস্টিং করে 9 তথা integer বানিয়ে নিবে।
পিএইচপিতে কয়েক ধরনের ডেটা টাইপ বা ধরন আছে। অর্থ্যাৎ পিএইচপি ভেরিয়েবল এ ধরনের বা টাইপের ডেটা নিতে পারে এবং যেকোন অপারেশন করতে পারে। মুলত পিএইচপির ডেটাকে ২ টি বিভাগে ভাগ করা হয়েছে
১. স্কেলার ডেটা টাইপ : এখানে ৪ ধরনের ডেটা টাইপ আছে
ক. boolean বা বুলিয়ান: এ ধরনের ডেটার শুধু ২টি মান থাকতে পারে TRUE অথবা FALSE, পিএইচপিতে অনেক ফাংশন আছে যেগুলি বুলিয়ান রিটার্ন করে। বুলিয়ান ডেটা সাধারনত if কন্ডিশনে ব্যবহার করা হয়। কোন একটা ভেরিয়েবলে বুলিয়ান ডেটা আছে কিনা সেটা দেখার জন্য is_bool() একটি ফাংশন আছে। যেমন
1.
<?php
2.
$x
= TRUE;
3.
$y
= 9;
4.
var_dump(
is_bool
(
$y
));
// output bool(false)
5.
var_dump(
is_bool
(
$x
));
// output bool(true)
6.
?>
খ. integer বা পূর্নসংখ্যা: পূর্নসংখ্যা তথা দশমিক ছাড়া সংখ্যা হচ্ছে এই ধরনের ডেটা যেমন ৯, ৮, -৬৫, -১ ইত্যাদি হচ্ছে integer ডেটা। is_int() ফাংশন দিয়ে যেকোন ভেরিয়েবলকে চেক করে দেখতে পারেন, যদি পূর্নসংখ্যা (integer) হয় তাহলে TRUE রিটার্ন করবে অন্যথায় FALSE. পূর্নসংখ্যা ধনাত্নক কিংবা ঋনাত্নক হতে পারে এমনকি দশভিত্তিক (decimal- 10 based) ছাড়াও হেক্সাডেসিমাল (১৬-ভিত্তিক), octal (৮-ভিত্তিক), দ্বিমিক (২-ভিত্তিক বা বাইনারি) সংখ্যাও integer হতে পারে। যেমন
1.
<?php
2.
$x
= 1011100;
//binary number 92
3.
var_dump(
$x
);
4.
?>
int(1011100)
গ. Float বা দশমিক সংখ্যা: দশমিক সংখ্যা যেমন ৫.২৩৬, ৫.২ ইত্যাদি হচ্ছে float number বা doubles বা real number
1.
<?php
2.
$x
= 5.2054;
3.
var_dump(
$x
);
4.
?>
float(5.2054)
সূচকীয় ফরেমেটেও float number লেখা যায় যেমন $x = 2x6e5;
ঘ. String বা অক্ষরের সারি: যেকোন অক্ষর সিঙ্গেল কোট, ডাবল কোটেশন, heredoc এবং nowdoc সিনট্যাক্সের মধ্যে রাখলে সেটা স্ট্রিং যেমন
1.
<?php
2.
$x
=
'webcoachbd'
;
3.
$x
=
"webcoachbd"
;
4.
$x
= <<<HTML
5.
<p>Webcoachbd is a bengali tutorial site</p>
6.
HTML;
7.
?>
২. Compound বা মিশ্র ডেটা টাইপ
ক. অ্যারে: পিএইচপি অ্যারে টিউটোরিয়াল (PHP Array )
খ. অবজেক্ট: অবজেক্ট এবং ক্লাস (Object and Class)
এছাড়া আরো দুটি বিশেষ ডেটা টাইপ আছে resource এবং NULL
resource সাধারনত বিভিন্ন ধরনের ডেটা হয়ে থাকে যেমন ডেটাবেসে অপারেশন করে যেসব ডেটা রিটার্ন করে সেগুলি resource ডেটা হিসেবে দেখে। আর NULL হল ফাকা ডেটা। কোন ভেরিয়েবল ডিক্লেয়ার করা হল কিন্তু কোন মান assign করা হলনা তাহলে সেই ভেরিয়েবলটির মান null হয়ে যায়।
টাইপ জাগলিং
যেকোন ল্যাংগুয়েজে যখন একটা ভেরিয়েবলে কিছু নিবেন তখন বলে দিতে হবে যে কোন ধরনের ডেটা এটা (টেকনিকালি এটাকে বলে টাইপ ডিক্লেয়ার করা বা explicit type definition)। শুধু পিএইচপিতে এ কাজটি করতে হয়না। পিএইচপি ইন্জিন ডেটা দেখে নিজে নিজেই বুঝে নেয় যে আপনি কি ধরনের ডেটা দিয়েছেন। এই অটোমেটিক টাইপ চিনে নেয়ার প্রক্রিয়ার নাম "টাইপ জাগলিং"। এটা পিএইচপির একটা শক্তিশালি বৈশিষ্ট্য।
টাইপ কাস্টিং
পিএইচপিতে টাইপ পরিবর্তন করা যায়। এক ডেটা টাইপ থেকে আরেক ডেটা টাইপে বদলে দেয়ার নাম টাইপ কাস্টিং। যে ডেটা টাইপে পরিবর্তন করতে চান সেটার সংকেতটি প্রথম বন্ধনির ভিতর দিয়ে এরপর ডেটা টুকু দিতে। সংকেতসমূহ
(int) পূর্নসংখ্যা করতে চাইলে
(bool) বুলিয়ান করতে চাইলে
(float) দশমিক/double/real সংখ্যা করতে চাইলে
(string) অক্ষরসারি করতে চাইলে
(array) অ্যারে বানাতে চাইলে
(object) অবজেক্ট এ রুপান্তর
(unset) এটা দিলে null হয়ে যাবে।
উদাহরন: যেমন $x = 9; আছে অর্থ্যাৎ এখন পূর্নসংখ্যা (integer) আছে আর আমি চাচ্ছি এটাকে স্ট্রিং বানাবো তখন এর টাইপ কাস্টিং করব এভাবে
1.
<?php
2.
$x
= 9;
3.
$x
= (string) 9;
4.
var_dump(
$x
);
5.
?>
string(1) "9"
যে লাইনে (string) এটা দিয়ে টাইপ কাস্টিং করলাম সেই লাইনটি বাদ দিয়ে var_dump() করুন আউটপুট int(9) এটা দেখাবে।
তদ্রুপ
1.
<?php
2.
$x
=
'45'
;
//now $x is string
3.
$x
= (int)
$x
;
// type casting to integer
4.
var_dump(
$x
)
//now output int(45)
5.
$y
= (
array
)
$x
;
// now casting to array
6.
?>
কেন টাইপ কাস্টিং জরুরি: পিএইচপি দিয়ে ডেটাবেস বা যেকোন ডেটা প্রসেসের সময় ডেটার টাইপ পরিবর্তন করার প্রয়োজন হতে পারে। উদাহরনস্বরুপ আপনার একটি ফর্মে হিডেন মান আছে, ঐ মানটি ধরুন একটা আইডি যেটা integer হিসেবে আপনার লাগবে ডেটাবেসে কোয়েরি করার সময়। এখন ফর্ম সাবমিট করলে মানটি যখন $_REQUEST['hidden_id'] এভাবে বা যেকোনভাবে পিএইচপি পেজে রিসিভ করবেন তখন এটা সাধারনত string হিসেবে আসে, কিন্তু এই স্ট্রিং দিয়ে কোয়েরি করলে ঝামেলা হবে কারন ডেটাবেসে id ফিল্ড রেখেছেন integer হিসাবে। এসব ঝামেলা এড়াতে আপনি যদি পিএইচপিতে মানটি ধরার সময় নিচের মত করে ধরেন তাহলে আপনি নিরাপদ হয়ে গেলেন।
1.
<?php
2.
$x
= (int)
$_REQUEST
[
'hidden_id'
];
//cast to integer
3.
?>
0 মন্তব্য(গুলি):
Post a Comment