PHP-তে অ্যারে রূপান্তর অপ্টিমাইজেশন

স্ট্রিংকে সর্বদা অ্যারেতে বিভক্ত করার প্রয়োজন হয় না, এটির সাথে কিছু করতে।

এর একটি উদাহরণ দেখা যাক। নিম্নলিখিত উদাহরণে, কোডের লেখক পরীক্ষা করছেন স্ট্রিংটিতে 3 সংখ্যাটি আছে কিনা:

php<?php
  $str = '12345';
  $arr = explode('', $str); // অ্যারেতে বিভক্ত করি
  
  if (in_array(3, $arr)) {
    echo 'আছে';
  } else {
    echo 'নেই';
  }
?>

লেখক খুব ভাল করেছেন - নিজের তৈরি সমাধানের বদলে PHP-এর অন্তর্নির্মিত ফাংশন ব্যবহার করেছেন।

তবে কোডটি এখনও সর্বোত্তম নয়: এখানে স্ট্রিংকে অ্যারেতে বিভক্ত করার কোন প্রয়োজন ছিল না, কারণ রয়েছে প্রস্তুত ফাংশন strpos, যা স্ট্রিংয়ে অনুসন্ধান করে:

php<?php
  $str = '12345';
  
  if (strpos(str, 3) !== false) {
    echo 'আছে';
  } else {
    echo 'নেই';
  }
?>

এখানে অ্যারেতে বিভক্ত করা কেন খারাপ? কারণ প্রথমত, অ্যারেতে বিভক্ত করতে প্রসেসরের সম্পদ ব্যয় হয়, দ্বিতীয়ত, ফলাফলস্বরূপ অ্যারেটি র্যামে জায়গা নেবে (এবং এটি সেই জায়গার চেয়ে বেশি হবে, যা মূল স্ট্রিংটি নেয়)।

নৈতিকতা: স্ট্রিংকে অ্যারেতে বিভক্ত করবেন না, যদি এটি না করার উপায় থাকে।

Задание 1

নিম্নলিখিত কোডে একজন প্রোগ্রামার স্ট্রিংয়ের অক্ষরগুলো উল্টো ক্রমে reversing করছে। এই প্রোগ্রামারের সমাধানটি অপ্টিমাইজ করুন:

php<?php
  $str = '123345';
  $rev = implode('', array_reverse(explode('', $str)));
  echo $rev; // আউটপুট দেবে '54321'
?>
Задание 2

নিম্নলিখিত কোডে একজন টেক্সটে শব্দের সংখ্যা খুঁজছে। এই প্রোগ্রামারের সমাধানটি অপ্টিমাইজ করুন:

php<?php
  $str = 'aaa bbb ccc'; // একটি দীর্ঘ স্ট্রিং
  echo count(explode(' ', $str));
?>