পিএইচপি টিউটোরিয়াল
(পর্ব-১০)
আনোয়ার হোসেন
সব ল্যাঙ্গুয়েজের মতো পিএইচপিতেও লুপ একই জিনিস। লুপ দিয়ে একটা কোড ব্লক যতবার ইচ্ছে এক্সিকিউট করানো যায়। পুনরাবৃত্তিরকাজগুলোলুপদিয়েকরাহয়। লুপেশর্ত দেয়া যায়এবংযতক্ষণশর্ত নামিলবে, ততক্ষণ পুনরাবৃত্তিচলতেই থাকবে। ধরুন, ১ থেকে ১০০ পর্যন্ত দেখতে চান, তাহলে সেটাকরতেপারেনমাত্রকয়েকলাইনেই, লুপদিয়ে। ওয়েবঅ্যাপিস্নকেশন তৈরিরসময় এ ধরনেরহাজারহাজারঅবস্থা আসবে, যেখানেআপনাকেলুপব্যবহারকরতেহবে। যেমন-
* একটাড্রপডাউন তৈরিকরতেহবে, যেখানে ১-১২ পর্যন্ত থাকবে,যাতেইউজার যেকোনোএকটিসিলেক্ট করেদিতেপারে (তারিখনির্বাচনেরজন্য এ ধরনেরড্রপডাউনলাগতেপারে)।এখানেলুপব্যবহারকরতেহবে।
*ডাটাবেজেহাজারহাজারডাটাআছে, কোয়েরিকরেএকটালুপে ফেলে দিলেইএকটার পর একটাডাটাআসতে থাকবেইত্যাদি।
পিএইচপিতেকয়েকধরনেরলুপআছে। যেমন-
ফরলুপ (for loop)
হোয়াইললুপ (while loop)
ফরইচলুপ (foreach loop)
ডু হোয়াইললুপ (do...while loop)
মূলতসবচেয়ে বেশিলাগে ফর লুপ, ফরইচএবংএরপর হোয়াইললুপ। ডু হোয়াইললুপ কম লাগে।
while loop
হোয়াইললুপেপ্রথমেইএকটাশর্ত/এক্সপ্রেশন থাকে, যতক্ষণশর্তটিপূরণনাহয়, ততক্ষণ হোয়াইললুপ (while loop)একটাকোডব্লককেexecuteকরতে থাকে। যখনশর্ত মিলেযায়,তখনলুপ থেমে যায়।
সঙ্কেত
while (condition){
code to be executed;
}
যদি condition falseহয়,তখন সেকেন্ডব্র্যাকেটের ভেতর (কোডব্লকটি) কোডটিএড়িয়েযায় (ব্র্যাকেটনাবলেcurly bracesবলাউচিত)। যখন শেষেরব্র্যাকেটটিআসবেতখনconditionআবার চেক করবে, trueহলে কোডআবারexecuteকরবে। condition-এ যতবার দেয়া আছে,ততবারএভাবেচলবেই। যেমন-
$i=1;
while($i<6){
echo 'A counter start from '. $i . '
';
$i++;
}
?>
আউটপুট
A counter start from 1
A counter start from 2
A counter start from 3
A counter start from 4
A counter start from 5
ব্যাখ্যা:প্রথমে $i-এরমান ১ দিয়েশুরুহয়েছে। এরপরwhileলুপের ভেতরশর্তটি ($i<6) চেক করবে$i-এরমান কত?
প্রথমবার$i-এরমান ১-এর মানে ১ এখানে ৬-এর চেয়ে ছোট,তাইএখনকোডব্লকেঢুকবেএবং সেখানকারecho স্টেটমেন্টবা যে কোডই থাকুকএকবারএক্সিকিউটকরবেএবং$i++ -এরকারণে$i-এরমান ১ বাড়াবে।
দ্বিতীয়বার,তাহলেএবার$i-এরমানপাবে ২ এবংএটাও ৬-এর চেয়ে ছোট,ফলেশর্তটি ($i<6) trueরিটার্ন করবেএবংলুপটিআবারএকবারকোডব্লকটিএক্সিকিউটকরবে। যেহেতুলুপের ভেতর$i++আছে,তাইআবার$i-এরমান ১ বাড়াবে।সুতরাং$i-এরমান এই লুপ শেষেহলো ৩। কেননা,প্রথমবার ১ বাড়িয়ে ২ হয়েছিল।এভাবে ৫ বারলুপটিপুনরাবৃত্তিহবে। যখন$i-এরমানবাড়তেবাড়তে ৬ হয়েযাবে,তখনশর্তটি ($i<6) আরমিলবেনা,কেননা ৬ তো ৬-এর ছোটনয়বরংসমান।সুতরাংশর্তটিfalseরিটার্ন করবে।
এবারপ্রথমে $i = 6দিলেকিআউটপুটআসবে? কিছুইআসবেনা।কারণ,তখন ($i<6) এই শর্তেওএর সাথে মিলবেনা,তাই কোডexecuteহবেনা। অর্থাৎএখন$i (বা ৬) ৬-এর চেয়ে ছোটনয়। প্র্যাকটিসকরে দেখুন।
do…while loop
এটাwhileলুপেরমতোই।শুধুপার্থক্য এটুকু যে,শর্তটিশেষেযাচাইহয়, শুরুতেকরারপরিবর্তে। অর্থাৎকমপক্ষে একবারলুপটিঘুরবেই।
সঙ্কেত
do{
code to be executed
}
while(condition;
যেমন-নিচেরউদাহরণটির কোডটিওউপরেরমতোহুবহু একই আউটপুট দেবে,শুধুকাজকরবেভিন্নভাবে।
$i=1;
do{
echo 'A counter start from '. $i . '
';
$i++;
}
while ($i<6);
?>
কিন্তু এখানেযদি $i=6 দেই,তাহলেকীহবে? যেমন-
$i=6;
do{
echo 'A counter start from '. $i . '
';
$i++;
}
while ($i<6);
?>
নিচেরমতোআউটপুটআসবে।কারণ,প্রথমবারশর্ত যাচাইছাড়াইলুপটিঘুরবে।
A counter start from 6
দেখুনলুপটিপ্রথমবার চেকিংছাড়াইএকবারঘুরেছে। প্রথমবার ঘোরার পর চেক করেছে যে লুপটিrepeatহবেকিনা? কিন্তু whileলুপেএটাপ্রথমবারই চেক হয়।
Forলুপ স্টেটমেন্টব্র্যাকেটের ভেতরতিনটিexpression নেয়, যেগুলো সেমিক্লোনদিয়েবিভক্ত হয়। প্রথমটিassignment statement(loop control variable),প্রথমবারলুপটিপুনরাবৃত্তিরআগেইএটাএকবারexecutionহয়। দ্বিতীয়টিBoolean expression, যেটাপ্রতিবারপুনরাবৃত্তিরআগেইএকবারএরমাননির্ণীত(evaluate)হয়, এই মানtrueহলেপুনরাবৃত্তিচলবেআরযদি false returnকরেতাহলেপুনরাবৃত্তি/লুপিংবন্ধহয়েযাবে। তৃতীয়টিদিয়েloop control variable-এরমানবাড়াতেবাকমাতেব্যবহারহয়। নিচেরউদাহরণটি দেখুন।লুপটিশুরুহয়েছে$i=1দিয়েএবংএটিচলবেযতক্ষণ$i-এরমান ৫-এর চেয়ে ছোটবাসমানহয়। আর$i-এরমান ১ করেবাড়বে।
for ($i=1; $i<=5; $i++){
echo "The number is " . $i . "
";
}
?>
আউটপুট
The number is 1
The number is 2
The number is 3
The number is 4
The number is 5
যেকোনোexpression (expr1, expr2 অথবা expr3)ফাঁকাবাএকটিতেএকাধিকexpression থাকতেপারে, যেগুলোকমাদিয়েবিভক্ত হবে। যদি expr2ফাঁকা থাকে,তাহলেএরdefault মান trueনিয়ে নেয়এবংতখনলুপটিচলতেই থাকবে, কখনও থামবেনা। তবেbreak স্টেটমেন্টব্যবহারকরে থামানোযাবে। যেমন-আগেরলুপটিইচাইলেনিচেরমতোকরেকরতেপারেন।
for ($i=1; ; $i++){
if($i> 5){
break;
}
echo "The number is " . $i . "
";
}
?>
** পিএইচপিতে ফর লুপে কোলনচিহ্নসমর্থনকরে। এটাঅনেকউপকারী,বিশেষকরেযখনলুপের ভেতরএইচটিএমএললিখতেহয়। যেমন-
The number is
;
দেখুনকীভাবে কোলনচিহ্নব্যবহারহয়েছেদ্বিতীয়বন্ধনীরবদলে। দ্বিতীয়বন্ধনীদিলে যেমন সেটা শেষ করতেহয় "}" চিহ্নদিয়ে, কোলনদিলে শেষ করতেহয়endfor;এভাবে।
ফরলুপব্যবহারকরেতারারপিরামিড
function pyramid($hm){
for($i=1; $i<=$hm; $i++){
for($j=1; $j<=$i; $j++){
echo '*';
}
echo '
';
}
}
pyramid(5);
?>
ব্যাখ্যা: $hmপ্যারামিটারে যে সংখ্যা দেবেন, সেইসংখ্যাকততা শেষ সারিতে দেখাবে। প্রথমলুপে (অর্থাৎ$i-এরলুপে) $iএখানে ১ থেকে শুরুহয়েছেএবংপ্রতিবারলুপিংয়েরসময় ১ করেবাড়বে।কারণ তৃতীয় এক্সপ্রেশন$i++ আছে। আরলুপটিচলবে$hmবার,কারণদ্বিতীয় এক্সপ্রেশনে$i<= $hm দেয়া আছে। এবারদ্বিতীয়লুপে ($j-এরলুপটিতে) $j-এরমান ১ থেকে শুরুহবেএবং$j<=$iএটারজায়গায়প্রতিবারলুপেরসময়$i-এরমানওখানে ১ করেবাড়বে। সুতরাংএভাবেপ্রথমবারএকটি * echoহবে,এরপরএকটাbrট্যাগেরপরেরবারদ্বিতীয় ফর লুপে$i-এরমান ২ হয়েযাবেএবং দুইবার* echoহবে। তৃতীয়বারআবারদ্বিতীয়লুপে ($j-এরলুপে) $i-এরমান ৩ হবেএবংতিনটি * echoহবেএবংএকটিbrট্যাগ। এভাবেpyramid()-এর ভেতরপ্যারামিটার যে সংখ্যা দেবেন সেইসংখ্যকবারলুপচলবেএবং * echoহতে থাকবে।
ফিডব্যাক :hossain.anower099@gmail.com