পিএইচপি কন্ডিশনাল স্টেটমেন্ট বলতে কী বোঝায়? What is PHP Conditional Statement?
কোনো শর্তের ওপর কোনো action নেয়ার জন্য কন্ডিশনাল স্টেটমেন্ট ব্যবহার হয়। ধরুন, আপনার ওয়েবসাইটে এমন একটি ফিচার যোগ করতে চান, যাতে কেউ যদি আপনার সাইটে দুপুর ১২টার আগে ঢুকে তাহলে দেখাবে Good Morning। আর যদি কেউ বিকেল ৫টার পর ঢুকে তাহলে দেখাবে Good Evening। এই ধরনের বা এর চেয়েও মজাদার ও অ্যাডভান্সড কাজগুলো করতে Conditional statement-এর দরকার। condition-এর ওপর ভিত্তি করে পিএইচপি স্বয়ংক্রিয়ভাবে কাজগুলো করতেই থাকে। পিএইচপিতে কয়েক ধরনের Conditional statement আছে।
* if স্টেটমেন্ট।
* if…else স্টেটমেন্ট।
* if…elseif…else স্টেটমেন্ট
* switch স্টেটমেন্ট।
if স্টেটমেন্ট
if স্টেটমেন্ট দিয়ে কিছু কোড execute করা হয় যখন আমাদের দেয়া condition-টি true হয়। নিচে উদাহরণের আউটপুট হবে Have a nice day, যদি ওইদিন Saturday হয়, যেদিন কোডটি লিখে রান করাবেন। পিএইচপির date () ফাংশনে প্যারামিটার ‘D’ দিলে ওই দিনের সংক্ষেপ নাম রিটার্ন করে।
<?php
$d = date(“D”);
if ($d==”Sat”){
echo “Have a nice Day”;
}
?>
if স্টেটমেন্টের আরও উদাহরণ
একসাথে একাধিক শর্ত/condition (expression) কীভাবে ব্যবহার করবেন।
<?php
$x = 9;
$y = ‘tutorialpoint’;
if(is_int($x) &&is_string($y)){// check if $x
integer & if $y string
echo ‘Yes both expressions are returned true’;
}
?>
আউটপুট
Yes both expressions are returned true কারণ is_int () ও is_string () দুটি ফাংশনই true রিটার্ন করেছে, কেননা $x (বা ৯) পূর্ণসংখ্যা এবং Sy (বা ‘tutorialpoint’) হলাে স্ট্রিং, আর & দিয়ে অপারেটরের কাজ করা হয়েছে। দুটি এক্সপ্রেশনই true রিটার্ন না করলে কোড ব্লকে ঢুকত না। যদি চান, কমপক্ষে একটি এক্সপ্রেশন true হলেই কোড ব্লকে ঢুকাব, তাহলে &&-এর জায়গায় OR বা || এই চিহ্ন দিন।
* if…else স্টেটমেন্ট
উপরের উদাহরণে if দিয়ে চেক করা হয়েছে শনিবার কি না। যদি হয় তাহলে একটি স্ট্রিং echo করে দেখালাম। এখন যদি না হয় অর্থাৎ শনিবার ছাড়া অন্য কোনো বার হয়, তাহলে কি হবে? এটাও ঠিক করে দিতে পারেন else দিয়ে। এখন নিচে দেখুন সেটাই করেছি। যদি শনিবার হয় তাহলে Today is not saturday স্ট্রিংটি else ব্লকে দিয়েছি।
<?php
$d=date(“D”);
if ($d==”Sat”) {
echo “Have a nice Day”;
}else{
echo “Today is not saturday”;
}
?>
দেখুন condition যেটা দেয়া হয়েছে, যদি সেটা true হয়, অর্থাৎ কোডটা যেদিন রান করাবেন, সেদিন যদি Saturday হয় তাহলে আউটপুট হবে Have a nice day আর তা না হলে Today is not Saturday.
** শর্ত (condition) যেটা থাকে মিললে true রিটার্ন করে, আর না মিললে false। যদি true রিটার্ন করে, তাহলে ওই কোড ব্লকে ঢুকে, আর false রিটার্ন করলে ঢুকে না।
*if…elseif…else স্টেটমেন্ট
এই statement দিয়ে এক বা একাধিক কোডের ব্লক execute করা যায়।
<?php
$number = 50; //provide any number
if ($number == 60){
echo “The number is 60”;
}elseif ($number == 45){
echo “The number is 45”;
}elseif($number == 33){
echo “The number is 33”;
}else{
echo “No number”;
}
?>
আউটপুট
No number
কারণ, এখানে প্রথমেই $number = 50 দেয়া হয়েছে। আর দেখুন কোনো if, elseif-এর কন্ডিশনে $number == 50 নেই, তাই শেষের else-এ ঢুকেছে। কোনো কন্ডিশন true রিটার্ন না করলে সবশেষে else-এ ঢুকে, যেমন এখানে হয়েছে। $number-এর 60 করে দিয়ে দেখুন প্রথমেই if কন্ডিশনের কোড ব্লকে ঢুকবে এবং This number is 60 আউটপুট আসবে।
switch স্টেটমেন্ট
if…elseif…else-এর কাজ switch স্টেটমেন্ট দিয়েও করা যায়। যখন if, elseif অনেক থাকবে এবং প্রতিটির এক্সপ্রেশন একই হবে, তখন switch ব্যবহার করতে পারেন। যদি if এক ধরনের, আবার elseif আরেক ধরনের এক্সপ্রেশন হয়, তাহলে if…elseif-ই ব্যবহার করতে হবে। আগের কোডটিতে সব if, elseif এ একই ভেরিয়েবলের মান ($ number) যাচাই করা হয়েছে। তাই এটি নিচের মতাে করে লেখতে পারেন switch দিয়ে।
<?php
$number = 50; //provide any number
switch($number){
case 60:
echo ‘The number is 60’;
break;
case 45:
echo ‘The number is 45’;
break;
case 33:
echo ‘The number is 33’;
break;
default:
echo ‘No number’;
}
?>
আউটপুট
No number
ব্যখ্যা: আমরা if…elseif যা দেখলাম, সেটাই এখানে করা হয়েছে। প্রথমে switch-এর মধ্যে এক্সপ্রেশনটি নিতে হয়, এরপর case দিয়ে এক্সপ্রেশনটি যাচাই করতে হয়। আর else-এর কাজ হচ্ছে default দিয়ে। default-এর আর break দেয়ার দরকার নেই। কেননা, এরপর তাে আর কোনো case নেই। তবে প্রতিটি case-এর শেষে break স্টেটমেন্ট দিতে হবে, তা না হলে যে case-এ কন্ডিশন মিলবে, সেখান থেকে শুরু করে এরপরেও যদি case থাকে, সেখানেও ঢুকবে এবং শেষ case পর্যন্ত এক্সিকিউট করে আসবে। break উঠিয়ে দেখুন সব case-এর কোড ব্লক আউটপুট আসবে। যেখানে switch…case ব্যবহার করার অপশন থাকবে, সেখানেই ব্যবহার করুন। কেননা, switch…case খুব দ্রুত কাজ করে if…elseif…else-এর চেয়ে।