Friday, May 17, 2024
Homeবিজ্ঞান ও প্রযুক্তিপিএইচপি স্ক্রিপ্ট তৈরি

পিএইচপি স্ক্রিপ্ট তৈরি

সূচীপত্র


পিএইচপি স্ক্রিপ্ট হলো কতগুলো নির্দেশনাযুক্ত পিএইচপি এক্সটেনশনের একটি ফাইল যা সার্ভারকে এর সেকশন বা স্টেটমেন্টগুলোকে দেখায়। স্ক্রিপ্ট উপরের দিক থেকে নির্দেশনাগুলো পড়ে এবং প্রতিটি এক্সিকিউট করে। পিএইচপি স্টেটমেন্টগুলোই হলো ইনস্ট্রাকশন বা নির্দেশনা- যা সিম্পল বা কমপ্লেক্স যে কোন ধরণেরই হতে পারে। পূ্র্ববর্তী অধ্যয়ে আমরা সিম্পল ও কমপ্লেক্স স্টেটমেন্ট নিয়ে আলোচনা করেছি। Hello World একটি সিম্পল স্টেটমেন্ট। যেমন- ডাটাবেজড ওয়েব এপ্লিকেশন তৈরি করতে যে সকল স্ক্রিপ্ট তৈরি করা হয় সেগুলোকেই সাধারণত কমপ্লেক্স স্টেটমেন্ট বলা হয়। এগুলো ডাইনামিক, এগুলো সার্ভারের মাধ্যমে ডাটাবেজ এবং ব্যবহারকারী দুইজনের সাথে কাজ করে। সহজভাবে বলতে গেলে, একসাথে একাধিক কমপ্লেক্স স্টেটমেন্টই হলো স্ক্রিপ্ট।

কমপ্লেক্স স্টেটমেন্ট এক বা একাধিক স্টেটমেন্ট বা স্টেটমেন্ট ব্লককে এক্সিকিউট করে। একটি ব্লক স্টেটমেন্ট এক বা একাধিক সিম্পল স্টেটমেন্টের একটি গ্রুপ যা দ্বিতীয় বন্ধনী দিয়ে আবদ্ধ করে রাখা হয়। পিএইচপি বন্ধনীর সমাপ্তিকে কমপ্লেক্স স্টেটমেন্টের শেষ ব্লক হিসেবে এক্সিকিউট করে।

এই অধ্যায়ে আমরা কন্ডিশনাল স্টেটমেন্ট, লুপ ও ফাংশন সম্বন্ধে আলোচনা করব।

  • কন্ডিশনাল স্টেটমেন্ট (conditional statement): কন্ডিশনাল স্টেটমেন্টে এক বা একাধিক শর্ত জুড়ে দেয়া হয়। শর্তগুলো সত্য হলে অর্থাৎ মিলে গেলে স্টেটমেন্টটি এক্সিকিউট হয়। if এবং switch হলো পিএইচপির কন্ডিশনাল স্টেটমেন্ট।
  • লুপ (loop): পর্যায়ক্রমিকভাবে কোন স্টেটমেন্টকে এক্সিকিউট করার জন্য লুপ ব্যবহার করা হয়। পিএইচপিতে চার ধরণের লুপ রয়েছে। যেমন- foreach, for, while ও do..while।
  • ফাংশন (function): ফাংশন একাধিক জায়গায় একাধিকবার ব্যবহার করা যায়। অনেক কাজ রয়েছে যেগুলো একটি এপ্লিকেশনের বিভিন্ন অংশে ব্যবহারের প্রয়োজন হয়। পিএইচপি কিছু স্টেটমেন্ট ব্লক দিয়ে ফাংশন তৈরি করে বারবার ব্যবহার করার সুযোগ দেয়।

কন্ডিশনাল স্টেটমেন্ট এবং লুপ শর্তের উপর ভিত্তি করে একটি স্টেটমেন্ট ব্লককে এক্সিকিউট করে। শর্তটি সত্য হলে স্টেটমেন্টটি এক্সিকিউট হয়। তাই কন্ডিশনাল স্টেটমেন্ট ও লুপে শর্তের ব্যবহার রয়েছে।

এই অংশে কিভাবে কমপ্লেক্স স্টেটমেন্ট ব্যবহার করতে হয় এবং কিভাবে তা স্ক্রিপ্টে সাজাতে হয় সে সম্বন্ধে জানব।

কন্ডিশন বা শর্ত সেট করা

কন্ডিশন একটি রাশি বা অভিব্যক্তি যাকে পিএইচপি মূল্যায়ন করে এটি সত্য না মিথ্যা। কমপ্লেক্স স্টেটমেন্টে ব্যবহৃত শর্তটি নির্ধারণ করে স্টেটমেন্ট ব্লকটি এক্সিকিউট হবে কি হবেনা। কন্ডিশন সেট করে ভ্যালুর সাথে তুলনা করতে হয়। এ কন্ডিশন সেট করতে ভ্যালুর তুলনার জন্য এখানে কিছু প্রশ্ন দেয়া হলো-

  • দুইটি ভ্যালু কি একই?- রাসেল ও রাহাতের জন্মস্থান কি একই? সজিবের বয়স কি ৭ বছর?
  • একটি ভ্যালু অন্যটি থেকে ছোট না বড়?- রুম্পা কি রেখার চেয়ে বয়সে ছোট? বাচ্চু সাহেবের সম্পদের পরিমান কি 10 কোটি টাকারও বেশি?
  • স্ট্রিংটি নির্দিষ্ট কোন প্যাটার্নের সাথে মিলে কি না?- রানার নাম r দিয়ে শুরু? জিপ কোড কি 5 সংখ্যার হয়?

দুই বা তার অধিক প্রশ্ন বা শর্ত দিয়েও কন্ডিশন সেট করা যায়। যেমন- আজ কি শনিবার এবং শনিবার কি অফিস বন্ধ থাকে? জুন মাস কি 30 দিনে শেষ অথবা 30 জুন কি সরকারি ছুটি?

ভ্যালুর তুলনা

আমরা সংখ্যা এবং স্ট্রিং দুটোরই তুলনা করতে পারি যে দুটি একই বা সমান কিনা? একটি অন্যটির ছোট কিনা অথবা একটি আরেকটির সমান নয়? এসব তুলনাগুলো করতে কম্পেরিজন অপারেটর (comparison operator) ব্যবহার করা হয়। পিএইচপি সেই তুল্য বিষয়গুলোকে মূল্যায়ন করে এবং সত্য অথবা মিথ্যা বের করে দেয়। যেমন-

$result = $a == $b;

= = কম্পেরিজন অপারেটরটি পরীক্ষা করে দুটি ভ্যালু সমান। যদি $a এবং $b সমান হয় তাহলে $result এ true নামে একটি বুলিয়ান ভ্যালু এসাইন হয়। $a এবং $b সমান না হলে $result এ false নামে একটি বুলিয়ান ভ্যালু এসাইন হয়। তাই $a == $b একটি সাধারণ কন্ডিশন যা সত্য অথবা মিথ্যা হতে পারে।

পিএইচপিতে ভ্যালুকে তুলনা করার জন্য অনেকগুলো কম্পেরিজন অপারেটর রয়েছে। নিচের টেবিলে কম্পেরিজন অপারেটরগুলো দেখানো হলো-

অপারেটরব্যাখ্যা
==দুটি ভ্যালুর মান কি সমান?
===দুটি ভ্যালুর মান এবং ডাটা টাইপ কি একই?
দ্বিতীয়টির চেয়ে প্রথম ভ্যালুটির মান বড়?
>=দ্বিতীয়টির চেয়ে প্রথম ভ্যালুটির মান বড় অথবা সমান?
দ্বিতীয়টির চেয়ে প্রথম ভ্যালুটির মান ছোট?
<=দ্বিতীয়টির চেয়ে প্রথম ভ্যালুটির মান ছোট অথবা সমান?
!=, <>দুটি ভ্যালুর মান সমান নয়?
!==দুটি ভ্যালুর মান এবং ডাটা টাইপ একই নয়?
কম্পেরিজন অপারেটর | Comparison Operator

কন্ডিশনাল স্টেটমেন্টে সংখ্যা এবং স্ট্রিং দুটোরই তুলনা করা যায়। পিএইচপি স্ট্রিংকে প্রথমে বর্ণানুক্রমিক, পরে বড়হাতের অক্ষর এবং সবশেষে ছোটহাতের অক্ষর এই ক্রমে তুলনা করে। যেমন- SS অবশ্যই Sa এর আগে আসবে। পিএইচপিতে স্ট্রিংকে তুলনা করা হয় তাদের ASCII কোডের উপর ভিত্তি করে।

নিচে কয়েকটি কম্পেরিজন দেয়া হলো যেগুলোকে পরীক্ষা করে পিএইচপি নির্ধারণ করতে পারে কোনটি সত্য কোনটি মিথ্যা-

  • $a == $b
  • $age != 21
  • $ageRumpa < $ageRekha
  • $house_price >= 1000000

দুটি == (সমান) চিহ্নের কম্পেরিজন অপারেটর দুটি ভ্যালু সমান কি না জিজ্ঞেস করে। এক্ষেত্রে একটি ভুল সচরাচর ঘটে থাকে। সেটি হলো দুটির পরিবর্তে একটি সমান চিহ্নের ব্যবহার। একটি সমান চিহ্নের মাধ্যমে ভ্যারিয়েবলে ভ্যালুকে ধারণ করা বুঝায়। যেমন- if ($weather = “raining”) স্টেটমেন্টে raining কে $weather এর ভ্যালু হিসেবে সেট করা হয়েছে। কিন্তু শর্ত হিসেবে আসলেই বৃষ্টি হচ্ছে কি না তা পরীক্ষা করে না এবং সবসময়ই এটি সত্য হবে। আর যদি আমরা লিখি if ($weather = “raining”) তাহলে পিএইচপি দেখবে $weather সমান if raining কিনা। $weather যদি raining হয় তাহলে স্টেটমেন্টটি সত্য, আর raining না হলে মিথ্যা হবে। তাই = চিহ্নের ব্যবহারে সতর্ক থাকতে হবে।  

ভ্যারিয়েবলের কনটেন্ট বা বিষয়বস্তু পরীক্ষা করা

কোন কোন ক্ষেত্রে নির্দিষ্ট কোন নামে ভ্যারিয়েবল আছে কি না, ভ্যারিয়েবলে কোন ধরণের ডাটা রয়েছে তা জানার প্রয়োজন হতে পারে। যেমন ভ্যালুটি ইন্টেজার কি না তা নিচের মতো করে জানা যায়-

  • isset($varname): এই নামে কোন ভ্যারিয়েবল থাকলেই কন্ডিশনটি সত্য হবে। যদি ভ্যারিয়েবলটিতে কোন ভ্যালু এসাইন না করা হয় তারপরও কন্ডিশনটি সত্য হবে।
  • empty($varname): যদি এই নামে কোন ভ্যারিয়েবল না থাকে তাহলে কন্ডিশনটি সত্য হবে। ভ্যালু 0 হলে, কোন ক্যারেক্টারবিহীন স্ট্রিং থাকলেও কন্ডিশনটি সত্য হবে।

ভ্যারিয়েবলটিতে কোন ধরণের ডাটা রয়েছে অর্থ্যাৎ এর ডাটাটাইপ জানা যায়। যেমন-

is_int($number)

তুলনাটি সত্য যখন $number টি একটি ইন্টেজার হবে। এধরনের আরো কিছু স্টেটমেন্ট নিচে তুলে ধরা হলো-

  • is_array($var2): পরীক্ষা করে $var2 একটি এ্যারে কি না।
  • is_float($number): পরীক্ষা করে $number একটি ফ্লোটিং পয়েন্ট নাম্বার কি না।
  • is_null($var1): পরীক্ষা করে $var1 এর মান 0 শূন্য কি না।
  • is_numeric($string): পরীক্ষা করে $string কোন নিউমেরিক স্ট্রিং বা সংখ্যা কি না।
  • is_string($string): পরীক্ষা করে $string একটি স্ট্রিং কি না।

এক্সপ্রেশনের সামনে একটি ! (বিস্ময়সূচক) চিহ্ন বসিয়ে কোন না বোধক কন্ডিশন পরীক্ষা করা হয়। এটি আসলে লজিক্যাল ‘না বোধক’ কন্ডিশন। এর মানে পিএইচপিকে এটি বলে- “যদি এই শর্তটি সত্য না হয়, তাহলে কিছু একটা কর”। যেমন- $varname ভ্যারিয়েবলটির কোন অস্তিত্ব না থাকলে স্টেটমেন্টটি সত্য হবে।

!isset($varname)

সহজ ভাষায় এটি আমরা প্রকাশ করতে পারি এভাবে- “যদি $varname না থাকে…”।

এক্সপ্রেশনে প্যাটার্নের মিলকরণ

কোন ফরম বা ফরমের ফিল্ড থেকে যখন ভ্যালু বা তথ্য সংগ্রহ করি তখন ভ্যালুটি নির্দিষ্ট কোন আকৃতি, ফরম্যাট বা প্যাটার্নে প্রত্যাশা করতে পারি। এই ধরণের নির্দিষ্ট ফরম্যাটের ভ্যালু পেতে চাইলে ক্যারেক্টার স্ট্রিংকে তুলনা করতে হবে নির্দিষ্ট কিছু বৈশিষ্ট্যের সাথে। উদাহরণস্বরুপ আমি এমন একটি ভ্যালু চাই যে স্ট্রিংটি শুরু হবে S দিয়ে অথবা স্ট্রিংটির মধ্যে একটি সংখ্যা থাকবে। এই ধরণের ভ্যালুর জন্য একটি স্ট্রিং প্যাটার্নের সাথে প্রাপ্তব্য ভ্যালুটিকে তুলনা করতে হয়। এই প্যাটার্নকে রেগুলার এক্সপ্রেশন বলা হয়।

যেমন- ex*.txt একটি প্যাটার্ন। এটি একটি স্ট্রিং যা শুরু হবে ex দিয়ে এবং শেষ হবে .txt দিয়ে। ex এবং .txt এর মাঝখানে যে কোন ক্যারেক্টার বসতে পারে। exam.txt, ex33.txt ও ex3x4.txt সবগুলোই এই প্যাটার্ণটির সাথে মিলে যায়।

প্যাটার্ন ম্যাচিং সবচেয়ে বেশি ব্যবহৃত হয় ওয়েব পেজের ফরম থেকে ইনপুট নেয়ার সময়। একে ফরম ভ্যালিডেশনও বলা হয়।

ব্যবহারকারীর দেয়া তথ্য যদি নির্দিষ্ট প্যাটার্নের সাথে না মিলে তাহলে ইনপুট দেয়া তথ্য ডাটাবেজে সংরক্ষিত হবে না। যেমন একজন ব্যবহারকারী একটি ফরমে জিপ কোড টাইপ করবে। এক্ষেত্রে কোডটির ফরম্যাট হবে পাঁচ সংখ্যার বা ZIP + 4। এভাবে কন্ডিশনে প্যাটার্ন সেট করে পরীক্ষা করতে পারি ইনপুটটি প্যাটার্ণটির সাথে মিলে কি না। না মিললে ব্যবহারকারীর কাছে পুনরায় সঠিক তথ্যটি চাইতে পারি।

প্যাটার্নে স্পেশাল ক্যারেক্টার বা বিশেষ অক্ষরের ব্যবহার

প্যাটার্নে সাধারণ অক্ষর বা বিশেষ অক্ষর থাকতে পারে।

  • সাধারণ অক্ষর (literal character): এগুলো হলো সাধারণ অক্ষর যার বিশেষ আলাদা কোন অর্থ নেই। যেমন e। ইংরেজি বর্ণমালার 26টি অক্ষরের যে কোনটিই হতে পারে।
  • বিশেষ অক্ষর (special character): অন্যদিকে প্যাটার্নে বিশেষ অক্ষরের বিশেষ অর্থ রয়েছে। যেমন- * (তারকা) চিহ্ন।

প্যাটার্ন তৈরিতে ব্যবহৃত কিছু অক্ষর ও তার ব্যাখ্যা এখানে দেয়া হলোঃ

অক্ষরব্যাখ্যাউদাহরণমিলবেমিলবে না
^লাইনের শুরু^ccatmy cat
$লাইনের শেষc$ticstick
.একটিমাত্র ক্যারেক্টার..দুই ক্যারেক্টারের যে কোন স্ট্রিংa, I
?পূর্ববর্তী ক্যারেক্টারটি ঐচ্ছিকmea?nmean, menmoan
( )একসঙ্গে আক্ষরিক অক্ষরের গ্রুপm(ea)nmeanmen, mn
[ ]ঐচ্ছিক আক্ষরিক অক্ষরের একটি সেট আবদ্ধ করা হয়m[ea]nmen, manmean, mn
এই দুই অক্ষরের মধ্যকার সবগুলো অক্ষর বসতে পারেm[a-c]nman, mbn, mcnmdn, mun, maan
+পূর্ববর্তী আইটেম এর পর এক বা একাধিক ক্যারেক্টার বসবেdoor[1-3]+  door111, door131door, door55
*পূর্ববর্তী আইটেম এর পর জিরো বা আরো অধিক স্ট্রিং বসবেdoor[1-3]*door, door311door4, door445
{ , }শুরু এবং পুনরাবৃত্তির পরিসীমার শেষ সংখ্যাa{2,5}aa, aaaaaa, xx3
\পরের অক্ষরটির আক্ষরিক অক্ষর হবেm\*nm*nmen, mean
(||)একটি বিকল্প স্ট্রিং এর সেট(Tom|Tommy)Tom, TommyThomas, To

প্যাটার্নের কিছু উদাহরণ

আক্ষরিক ও বিশেষ অক্ষর একসাথে ব্যবহার করে দীর্ঘ ও জটিল প্যাটার্ণ তৈরি করা যায়। একটি স্ট্রিংকে প্যাটার্নের সাথে তুলনা করা হয়। যদি এটি প্যাটার্নের সাথে মিলে যায় তাহলে স্টেটমেন্টটি সত্য হয়।

উদাহরণ-১:

^[A-Za-z].*

এই প্যাটার্নটির দুটি অংশ রয়েছে-

  • ^[A-Za-z]:  প্রথম অংশটি নির্দেশ করে স্ট্রিংটির শুরু হবে একটি বর্ণ দিয়ে। যা বড়হাতের অক্ষর বা ছোটহাতের অক্ষর যে কোনটিই হতে পারে।
  • .*:  এই অংশটি নির্দিষ্ট করে স্ট্রিংটিতে এক বা একাধিক ক্যারেক্টার থাকতে পারে। এগুলো হতে পারে সংখ্যা, বর্ণ, স্পেইস বা অন্যকিছু।

^[A-Za-z].* প্যাটার্নটি again, Sam, 4 times, and I স্ট্রিং এর সাথে মিল হবে। কিন্তু 123 ও ? এর সাথে মিলবে না।

উদাহরণ-২:

Dear (Kim|Rikki)

এই প্যাটার্নটিতেও দুটি অংশ রয়েছে এবং দুটি স্ট্রিংকে আলাদাভাবে সংজ্ঞায়িত করেছে।

  • Dear: প্রথম অংশটি একটি আক্ষরিক ক্যারেক্টার স্ট্রিং মাত্র।
  • (Kim|Rikki): এই অংশটি নির্দেশ করে Kim অথবা Rikki স্ট্রিংটি অবশ্যই মিলতে হবে।

এক্সপ্রেশনটি Dear Kim ও My Dear Rikki স্ট্রিং এর সাথে মিললেও Dear Bobby ও Kim এর সাথে মিলবে না।

উদাহরন-৩:

^[0-9]{5}(\-[0-9]{4})?$

এই প্যাটার্নটি কোন জিপ কোডকে সংজ্ঞায়িত করেছে এবং এর অনেকগুলো অংশ রয়েছে।

  • ^[0-9]{5}: প্রথম অংশটি বলে দিচ্ছে এটি হবে পাঁচটি সংখ্যার একটি স্ট্রিং।
  • \-: ব্যাকশ্ল্যাসটি (-) হাইফেন একটি সাধারণ অক্ষর এটি নির্দেশ করে।
  • [0-9]{4}: এই অংশটি পিএইচপিকে বলে দেয় এটি হবে চারটি সংখ্যার একটি স্ট্রিং।
  • ( )?: এই ক্যারেক্টারগুলো শেষ দুটি পার্টকে গ্রুপ করে এবং ঐচ্ছিক বলে চিহ্নিত করে।
  • $: ডলার চিহ্নটি বলে দেয় স্ট্রিংটি শেষ। এরপর আর কোন ক্যারেক্টার বসানো যাবে না।

প্যাটার্নটি 90001 ও 90002-4323 এর সাথে মিলে এবং 9001 ও 12-4321 সাথে কখনোই মিলবে না।

উদাহরণ-4:

^.+@.+\.com$

এই প্যাটার্নটি বুঝায় @ এর সাথে কোন ক্যারেক্টার বসবে এবং প্যাটার্নটি .com দিয়ে শেষ হবে। সহজ কথায় এটি একটি ই-মেইল ঠিকানা নির্দেশ করার সাধারণ ফরম্যাট। প্যাটার্নটিতে অনেকগুলো অংশ রয়েছে।

  • ^.+: এই অংশটি বুঝায় এর পূর্বে এক বা একাধিক ক্যারেক্টার স্ট্রিং বসতে পারে।
  • @: এটি একটি অক্ষর। এটি কোন স্পেশাল ক্যারেক্টার নয় এবং @ এর পূর্বে ব্যাকশ্ল্যাস দেয়ার প্রয়োজন হয় না।
  • .+: এটি এক বা একাধিক ক্যারেক্টারের স্ট্রিং নির্দেশ করে।
  • \.: শ্ল্যাসটি পিএইচপিকে একটি আক্ষরিক . (ডট) দেখতে বলে।
  • com$: সবশেষে স্ট্রিং থাকবে এবং ডলার সাইন পুরো এক্সপ্রেশনটি শেষ হয়েছে নির্দেশ করে।

এই প্যাটার্নটি you@yourcompany.com ও  johndoe@somedomain.com এর সাথে মিলে যায় এবং কোনভাবেই you@yourcompany.net, you@.com ও @you.com. এর সাথে মিলবে না।

প্যাটার্ন মিল করার জন্য ফাংশনের ব্যবহার

প্যাটার্ন তৈরি করার পর তা ফাংশনে ব্যবহারের মাধ্যমে ভ্যালুর সাথে তুলনা করতে হবে। preg_match ফাংশন ব্যবহার করে একটি স্ট্রিংকে প্যাটার্নের সাথে মিল করে তুলনা করতে পারি। এর সাধারণ ফরম্যাটটি হলো-

preg_match(“pattern”,value);

প্যাটার্নটি অবশ্যই ডাবল কোটেশনের মধ্যে রাখতে হবে। অনেকসময় ডাবল কোটেশনের মধ্যে প্যাটার্নের দুইপাশে দুটি ফরওয়ার্ড শ্ল্যাসও ব্যবহার করা হয়। উদাহরণস্বরূপ নিচে একটি ফরমের নামকে প্যাটার্নের সাথে তুলনা করে পরীক্ষা করা হয়েছে। ভ্যালুটি $name নামের ভ্যারিয়েবলে রাখা হয়েছে।

preg_match(“/^[A-Za-z’ -]+$/”,$name)

এই স্টেটমেন্টে প্যাটার্নটি যা নির্দেশ করে-

  • প্যাটার্নটি ফরওয়ার্ড শ্ল্যাস দিয়ে আবদ্ধ করা হয়েছে।
  • ^ ও $ চিহ্ন যথাক্রমে স্ট্রিংটি শুরু ও শেষকে নির্দেশ করে।
  • [] দ্বারা সবধরনের আক্ষরিক ক্যারেক্টার মেনে নেওয়া হবে বুঝানো হয়েছে। ক্যারেক্টারগুলোর মধ্যে ছোটহাতের, বড়হাতের অক্ষর, ঊর্ধ্বকমা বা এপোসট্রোপ ও হাইফেন থাকতে পারে।
  • এরপর একটি + চিহ্ন ব্যবহার করা হয়েছে। এর মানে হলো [] এর ভিতর যে কোন দৈর্ঘ্যের ক্যারেক্টার ব্যবহার করা যাবে কিন্তু কমপক্ষে একটি ক্যারেক্টার অবশ্যই ব্যবহার করতে হবে।

একাধিক তুলনা একত্রীকরণ

আপনার শর্তকে নিশ্চিত করতে একাধিক প্রশ্ন করতে হতে পারে। অর্থাৎ একটি শর্তের মধ্যে একাধিক প্রশ্ন থাকতে পারে বা অনেকগুলো শর্ত মিলে একটি শর্ত গঠিত হতে পারে। উদাহরণস্বরুপ আপনার প্রতিষ্ঠানের বিভিন্ন পণ্যের তালিকা বা ক্যাটালগ রয়েছে তিনটি ভাষায়। ক্রেতা কোন পণ্যের ক্যাটালগ কোন ভাষায় দেখতে চায় সেটা জানা প্রয়োজন। এজন্য তুলনাগুলোকে একসাথে করার প্রয়োজন হয়। এর সাধারণ ফরম্যাট হলো-

comparison1 and|or|xor comparison2 and|or|xor comparison3 and|or|xor ...

তুলনাগুলোকে একসাথে করতে সাধারণত তিনটি শব্দ ব্যবহৃত হয়-

  • and: যখন দুটি তুলনা বা শর্তই সত্য হয়।
  • or: যে কোন একটি অথবা দুটি শর্তই সত্য হয়।
  • xor: একটিমাত্র শর্ত সত্য হয়।

এখানে একটি টেবিলে কতগুলো তুলনার উদাহরণ দেয়া হলো-

তুলনাসত্য হবে যদি
$ageShampa == 21 or $ageShampa == 22শম্পার বয়স 21 অথবা 22 হয়।
$ageShampa > 29 and $city == “DK”শম্পার বয়স 29 এর বেশি এবং সিটি ঢাকা হয়।
$ageShampa > 29 or $state == “DK”শম্পার বয়স 29 এর বেশি অথবা এলাকা ঢাকা হয়।
$city == “DK” xor $state == “NK”সিটি ঢাকা অথবা এলাকা নেত্রকোনা, কিন্তু দুটোই নয়।
$name != “Shampa” and $age < 13শম্পা ছাড়া যে কেউ এবং বয়স 13 এর কম।

এভাবে প্রয়োজনীয় সংখ্যক তুলনা একসাথে করা যায়। তুলনায় পিএইচপি প্রথম and, পরে xor এবং সবশেষে or কে মূল্যায়ন করে। যেমন নিচের শর্তটিতে তুলনা করা হয়েছে-

$resCity == “Dhaka” or $resArea == “Dhanmondi” and $name == “Rasel”

ক্রেতার নাম Rasel এবং তিনি যদি Dhaka বসবাস করেন তাহলে তুলনাটি সত্য। যদি তিনি Dhanmondi তেও বসবাস করেন তাহলেও স্টেটমেন্টটি সত্য, তার নাম যাই হোক না কেন। অপরদিকে যদি Dhaka বসবাস করে কিন্তু নাম Rasel না হয় তাহলে শর্তটি মিথ্যা হবে। স্ক্রিপ্ট নিচের ধারাবাহিকতায় শর্তগুলো পরীক্ষা করে বলেই আমরা এই ধরণের ফলাফল পেয়েছি-

  1. প্রথমে and কে পরীক্ষা করেঃ স্ক্রিপ্ট প্রথমে $resArea পরীক্ষা করে দেখে এটা Dhanmondi তারপর $name পরীক্ষা করে দেখে Rasel। স্ক্রিপ্ট যখন দেখে দুটোই মিলে যায় তখন শর্তটি সত্য হয় এবং স্ট্রিপ্ট or শর্তটি আর পরীক্ষা করে না। একটি অথবা কোন শর্তই না মিললে স্ক্রিপ্ট or শর্তটি পরীক্ষা করতে যায়।
  2. পরবর্তীতে or কে পরীক্ষা করেঃ স্ক্রিপ্ট $resCity পরীক্ষা করে দেখে এটি Dhaka কি না। Dhaka হলে স্টেটমেন্টটি সত্য, অন্যথায় মিথ্যা।

তবে প্রয়োজনে () প্রথম বন্ধনী ব্যবহার করে শর্ত পরীক্ষার এই ক্রমটিকে পরিবর্তন করা যায়। প্রথম বন্ধনীর ভিতরের অংশটিকেই স্ক্রিপ্ট প্রথমে পরীক্ষা করে। যেমন পূর্বের স্টেটমেন্টটিকে নিচের মতো করে লিখে এর শর্তগুলো পরীক্ষার ক্রমটিকে পরিবর্তিত করতে পারি-

($resCity == “Dhaka” or $resArea == “Dhanmondi”) and $name == “Rasel”

প্রথম বন্ধনী শর্তপরীক্ষা করার ক্রমটিকে পরিবর্তিত করেছে। or প্রথমে মূল্যায়িত হয়েছে কারণ এটি প্রথমবন্ধনীর ভিতরে। এখন $name সমান Rasel এবং Dhaka অথবা Dhanmondi যে কোন একটি জায়গায় বসবাস করলেই শর্তটি সত্য হবে। স্ক্রিপ্ট নিচের ক্রমে শর্তটি পরীক্ষা করে-

  1. প্রথমে or কে পরীক্ষা করেঃ স্ক্রিপ্ট পরীক্ষা করে $resCity সমান Dhaka অথবা $resArea সমান Dhanmondi কিনা। না মিললে শর্তটি মিথ্যা এবং পিএইচপি স্ক্রিপ্ট পড়া বন্ধ করে দেয় আর এগোয় না। আর মিলে গেলে এই অংশের শর্তটি সত্য হবে এবং স্ক্রিপ্ট and এর পরের অংশটি পরীক্ষা করবে।
  2. পরবর্তীতে and কে পরীক্ষা করেঃ স্ক্রিপ্ট $name পরীক্ষা করে দেখে এটি Rasel কিনা। মিলে গেলে শর্তটি সত্য হবে অন্যথায় মিথ্যা।

অন্যান্য প্রোগ্রামিং ভাষা যেমন সি ভাষার মতো পিএইচপিতেও and এর পরিবর্তে && এবং or এর পরিবর্তে || ব্যবহার করা যায়। $a < $b and $c > $b স্টেটমেন্টটির মতোই $a < $b && $c > $b একটি বৈধ স্টেটমেন্ট যা পিএইচপি স্বীকৃত।

x

নারুল মিয়া
নারুল মিয়াhttps://tiltony.com
নারুল মিয়া আমার ডাকনাম। যদিও এই নামে দু’একজনের বেশি আমাকে চিনেন না। আমার দূর সম্পর্কের এক নানী খুব আদর করে এই নামে ডাকতেন। আমার আসল নাম মো. মনিরুজ্জামান। লিখতে ভালোবাসি। চলার পথে যেসব বিষয়ের সম্মুখীন হয়েছি সাধারণত সেগুলো নিয়ে লিখি, নিজের মতো করে।
RELATED ARTICLES
- Advertisment -

Most Popular

Recent Comments