PHP-তে ফ্ল্যাগ নিয়ে কাজ

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

চলুন নিম্নলিখিত সমস্যাটি সমাধান করি: একটি অ্যারে দেওয়া আছে সংখ্যা সহ, এতে কি 3 মান সহ কোনো উপাদান আছে কিনা তা পরীক্ষা করতে হবে। যদি থাকে - '+++' আউটপুট করব, যদি না থাকে - '---' আউটপুট করব।

প্রথমে চলুন '+++' আউটপুট করার চেষ্টা করি। এর জন্য আমাদের অ্যারের সমস্ত উপাদানকে পুনরাবৃত্তি করব এবং একটি if দিয়ে জিজ্ঞাসা করব - বর্তমান উপাদানটি কি 3 মানের সমান? যদি সমান হয় - '+++' আউটপুট করব:

php<?php
  $arr = [1, 2, 3, 4, 5];
  
  foreach ($arr as $elem) {
    if ($elem === 3) {
      echo '+++';
    }
  }
?>

কিন্তু আমাদের সমাধানটি খুব ভাল নয়: কারণ যদি অ্যারেতে একটি 3 মান না থাকে, বরং 여러টি থাকে, তাহলে '+++' কয়েকবার আউটপুট হবে। চলুন আমাদের অ্যারেটি সংশোধন করি (দুটি ³ মান সহ উপাদান তৈরি করি) এবং এটা যাচাই করব:

php<?php
  $arr = [1, 2, 3, 4, 3, 5];
  
  foreach ($arr as $elem) {
    if ($elem === 3) {
      echo '+++'; // কয়েকবার আউটপুট করবে
    }
  }
?>

সমস্যাটি ঠিক করি: break ব্যবহার করে লুপ শেষ করি, যদি উপাদানটি ইতিমধ্যেই পাওয়া যায়:

php<?php
  $arr = [1, 2, 3, 4, 3, 5];
  
  foreach ($arr as $elem) {
    if ($elem === 3) {
      echo '+++';
      break;  // লুপ শেষ করি
    }
  }
?>

চলুন এখন এমনভাবে করার চেষ্টা করি, যাতে, যদি অ্যারেতে 3 মান সহ কোনো উপাদানই না থাকে, তাহলে '---' আউটপুট হয়। একটি সাধারণ ভুল ধারণা হবে আমাদের if-এ else যোগ করা - এই ক্ষেত্রে '---' ³ নয় এমন সমস্ত উপাদানের জন্য আউটপুট হবে:

php<?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 উপাদান নেই:

javascript$arr = [1, 2, 3, 4, 5];
$flag = false; // ধরে নিই যে অ্যারেতে 3 উপাদানটি নেই

এরপর আমরা আগের মতো করেই একটি if সহ লুপ চালাব। যদি লুপ সনাক্ত করে যে অ্যারেতে ³ উপাদান আছে - তাহলে flag ভেরিয়েবলটি true মানে সেট করব এবং break ব্যবহার করে লুপ থেকে বেরিয়ে আসব:

php<?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<?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<?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 '---';
  }
?>
Задание 1

একটি অ্যারে দেওয়া আছে:

php<?php
  $arr = ['a', 'b', 'c', 'd', 'e'];
?>

পরীক্ষা করুন যে এই অ্যারেতে 'c' উপাদানটি আছে কিনা। যদি থাকে - '+++' আউটপুট করুন, আর যদি না থাকে - '---' আউটপুট করুন।

Задание 2

এমন একটি কোড লিখুন যা একটি সংখ্যা প্রাইম কিনা তা পরীক্ষা করবে। একটি প্রাইম সংখ্যা শুধুমাত্র এক এবং নিজে দ্বারা বিভাজ্য, এবং অন্য সংখ্যা দ্বারা বিভাজ্য নয়।