PHP-তে ফ্ল্যাগ নিয়ে কাজ
এখন আমরা ফ্ল্যাগ নিয়ে কাজ করতে শিখব।
ফ্ল্যাগ হল একটি বিশেষ ভেরিয়েবল, যা
শুধুমাত্র দুটি মান নিতে পারে: true
এবং false। ফ্ল্যাগ ব্যবহার করে
সেসব সমস্যার সমাধান করা যায় যা
কিছুর অনুপস্থিতি পরীক্ষা করে:
উদাহরণস্বরূপ, এটি পরীক্ষা করা যায় যে একটি অ্যারেতে
একটি নির্দিষ্ট মান সহ কোনো উপাদান নেই। চলুন
শুরু করা যাক।
চলুন নিম্নলিখিত সমস্যাটি সমাধান করি: একটি অ্যারে দেওয়া আছে
সংখ্যা সহ, এতে কি
3 মান সহ কোনো উপাদান আছে কিনা তা পরীক্ষা করতে হবে। যদি
থাকে - '+++' আউটপুট করব, যদি না থাকে -
'---' আউটপুট করব।
প্রথমে চলুন '+++' আউটপুট করার চেষ্টা করি।
এর জন্য আমাদের অ্যারের সমস্ত উপাদানকে পুনরাবৃত্তি করব
এবং একটি if দিয়ে জিজ্ঞাসা করব - বর্তমান
উপাদানটি কি 3 মানের সমান? যদি সমান হয় - '+++'
আউটপুট করব:
<?php
$arr = [1, 2, 3, 4, 5];
foreach ($arr as $elem) {
if ($elem === 3) {
echo '+++';
}
}
?>
কিন্তু আমাদের সমাধানটি খুব ভাল নয়: কারণ যদি
অ্যারেতে একটি 3 মান না থাকে,
বরং 여러টি থাকে, তাহলে '+++' কয়েকবার
আউটপুট হবে। চলুন আমাদের অ্যারেটি সংশোধন করি (দুটি
³ মান সহ উপাদান তৈরি করি) এবং এটা যাচাই করব:
<?php
$arr = [1, 2, 3, 4, 3, 5];
foreach ($arr as $elem) {
if ($elem === 3) {
echo '+++'; // কয়েকবার আউটপুট করবে
}
}
?>
সমস্যাটি ঠিক করি:
break ব্যবহার করে লুপ শেষ করি, যদি উপাদানটি ইতিমধ্যেই পাওয়া যায়:
<?php
$arr = [1, 2, 3, 4, 3, 5];
foreach ($arr as $elem) {
if ($elem === 3) {
echo '+++';
break; // লুপ শেষ করি
}
}
?>
চলুন এখন এমনভাবে করার চেষ্টা করি, যাতে,
যদি অ্যারেতে 3 মান সহ কোনো উপাদানই
না থাকে, তাহলে '---' আউটপুট হয়। একটি সাধারণ
ভুল ধারণা হবে আমাদের if-এ else যোগ করা -
এই ক্ষেত্রে '---'
³ নয় এমন সমস্ত উপাদানের জন্য আউটপুট হবে:
<?php
$arr = [1, 2, 3, 4, 5];
foreach ($arr as $elem) {
if ($elem === 3) {
echo '+++'; // উপাদান 3-এ আউটপুট করবে
} else {
echo '---'; // উপাদান 1, 2, 4, 5-এ আউটপুট করবে
}
}
?>
সুতরাং, else যোগ করার ধারণা - খারাপ
ধারণা, কাজ করে না। এই ধরনের
সমস্যা সমাধানের জন্য (এই ধরনের সমস্যা বেশ
ঘটে) তথাকথিত ফ্ল্যাগ ব্যবহার করা হয়।
যেমনটি ইতিমধ্যেই উল্লেখ করা হয়েছে, ফ্ল্যাগ - এটি এমন
একটি ভেরিয়েবল, যা দুটি মান নিতে পারে:
true অথবা false।
সুতরাং, চলুন একটি flag ভেরিয়েবল তৈরি করি
নিম্নলিখিত মান সহ: যদি এটি true-এর সমান হয়,
তাহলে অ্যারেতে 3 উপাদান আছে, আর যদি
false হয়, তাহলে এমন কোনো উপাদান নেই।
প্রাথমিকভাবে flag ভেরিয়েবলটি
false মানে সেট করি - অর্থাৎ ধরে নেব,
যে অ্যারেতে 3 উপাদান নেই:
$arr = [1, 2, 3, 4, 5];
$flag = false; // ধরে নিই যে অ্যারেতে 3 উপাদানটি নেই
এরপর আমরা আগের মতো করেই একটি if সহ লুপ চালাব।
যদি লুপ সনাক্ত করে যে অ্যারেতে
³ উপাদান আছে - তাহলে flag ভেরিয়েবলটি
true মানে সেট করব এবং break ব্যবহার করে
লুপ থেকে বেরিয়ে আসব:
<?php
$arr = [1, 2, 3, 4, 5];
$flag = false; // ধরে নিই যে অ্যারেতে 3 উপাদানটি নেই
foreach ($arr as $elem) {
if ($elem === 3) {
$flag = true; // উপাদান আছে - $flag ভেরিয়েবলটি পুনরায় সংজ্ঞায়িত করব
break; // লুপ থেকে বেরিয়ে আসব
}
}
?>
অ্যারেতে 3 আছে কিনা
এই প্রশ্নের উত্তর, আমরা শুধুমাত্র লুপের পরে দিতে পারি।
এবং এই উত্তর আমাদের কাছে ইতিমধ্যেই আছে: লুপের পরে
flag ভেরিয়েবলটি false থাকতে পারে
অথবা true-এ তার মান পরিবর্তন করতে পারে,
যদি লুপ অ্যারেতে 3 সনাক্ত করে:
<?php
$arr = [1, 2, 3, 4, 5];
$flag = false;
foreach ($arr as $elem) {
if ($elem === 3) {
$flag = true;
break;
}
}
// এখানে $flag ভেরিয়েবলটি true বা false
?>
এখন লুপের পরে আমরা একটি if তৈরি করতে পারি, যা
flag ভেরিয়েবলটি দেখবে এবং
'+++' বা '---' স্ক্রিনে আউটপুট করবে:
<?php
$arr = [1, 2, 3, 4, 5];
$flag = false;
foreach ($arr as $elem) {
if ($elem === 3) {
$flag = true;
break;
}
}
if ($flag === true) {
echo '+++';
} else {
echo '---';
}
?>
একটি অ্যারে দেওয়া আছে:
<?php
$arr = ['a', 'b', 'c', 'd', 'e'];
?>
পরীক্ষা করুন যে এই অ্যারেতে
'c' উপাদানটি আছে কিনা।
যদি থাকে - '+++' আউটপুট করুন,
আর যদি না থাকে - '---' আউটপুট করুন।
এমন একটি কোড লিখুন যা একটি সংখ্যা প্রাইম কিনা তা পরীক্ষা করবে। একটি প্রাইম সংখ্যা শুধুমাত্র এক এবং নিজে দ্বারা বিভাজ্য, এবং অন্য সংখ্যা দ্বারা বিভাজ্য নয়।