অ্যারেগুলির সাথে কাজ করার জন্য ফাংশন। তত্ত্ব সেট করুন - পিএইচপি: অ্যারে - হেক্সলেট পিএইচপি মান অনুসারে অ্যারেগুলির ছেদ

সেটতত্ত্ব. আমি জানি কত মানুষ গণিতবিদদের ভয় পায়, কিন্তু বিশেষভাবে সেট তত্ত্ব (নিষ্পাপ) খুবই সহজ এবং বোধগম্য। অধিকন্তু, আমরা ক্রমাগত দৈনন্দিন জীবনে এর উপাদানগুলি ব্যবহার করি। এবং প্রোগ্রামিংয়ে এটি প্রতিটি ধাপে ঘটে।

সেট তত্ত্বের মৌলিক ধারণা, আশ্চর্যজনকভাবে, হল একটি গুচ্ছ. একটি সেট স্বেচ্ছাচারী প্রকৃতির বস্তুর একটি সংগ্রহকে বোঝায়, যা একক সমগ্র হিসাবে বিবেচিত হয়। সবচেয়ে সহজ উদাহরণ হল সংখ্যা। আরবি সংখ্যার সেটে 10টি উপাদান রয়েছে এবং এটি চূড়ান্ত. সসীমতার ধারণাটি স্বজ্ঞাত এবং এর অর্থ হল একটি সেটে সসীম সংখ্যক উপাদান রয়েছে।

একটি অসীম সেটের উদাহরণ হল প্রাকৃতিক সংখ্যা। পরিবর্তে, প্রাকৃতিক সংখ্যার সেট হল পূর্ণসংখ্যার একটি উপসেট, যা ফলস্বরূপ মূলদ সংখ্যার একটি উপসেট, ইত্যাদি।

"সাবসেট" এর অর্থ হল এক সেটের সমস্ত উপাদান অন্য সেটে অন্তর্ভুক্ত করা হয়, যাকে বলা হয় সুপারসেট(একটি উপসেটের সাথে সম্পর্কিত)।

চেনাশোনা দ্বারা সেট প্রতিনিধিত্ব বেশ সুবিধাজনক. আপনি দ্রুত মূল্যায়ন করতে পারেন কিভাবে বিভিন্ন সেট একে অপরের সাথে সম্পর্কিত।

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

সেট তত্ত্বে আমাদের জন্য প্রধান জিনিস হল তাদের উপর অপারেশন। এর মধ্যে রয়েছে: সংযোজন, ইউনিয়ন, ছেদ, পার্থক্য, কার্টেসিয়ান পণ্য এবং কিছু অন্যান্য।

একটি সহজ উদাহরণ। আপনি যখন Facebook এ অন্য ব্যক্তির পৃষ্ঠায় যান, তখন Facebook আপনাকে পারস্পরিক বন্ধুদের সাথে একটি ব্লক দেখায়। যদি আমরা ধরে নিই যে আপনার বন্ধু এবং আপনার বন্ধুর বন্ধু দুটি সেট, তাহলে পারস্পরিক বন্ধু হল বন্ধুদের মূল সেটের ছেদ হিসাবে প্রাপ্ত সেট।

প্রোগ্রামিং এর দিকে অগ্রসর হলে, আপনি লক্ষ্য করবেন যে একটি অ্যারে একটি সেটের অনুরূপ, এবং এটি প্রকৃতপক্ষে এমনভাবে ভাবা যেতে পারে। এটা কেন এত গুরুত্বপূর্ণ? নির্দিষ্ট ক্রিয়াকলাপের পিছনে নীতিগুলি বোঝার মাধ্যমে, আপনি দ্রুত এবং সবচেয়ে কার্যকর উপায়ে সেগুলি বাস্তবায়ন করতে পারেন৷ উদাহরণস্বরূপ, আপনার পিএইচপি-তে একটি সেট ইন্টারসেকশন অপারেশন প্রয়োজন জেনে আপনি একটি ফাংশন খুঁজে বের করার চেষ্টা করতে পারেন যা কাজটি করে। এটি করার জন্য, শুধু Google এ ক্যোয়ারী লিখুন: php সেট ছেদ(সেট - সেট, ছেদ - ছেদ)। অনুসন্ধান ফলাফলে প্রথম (অন্তত আমার জন্য) লিঙ্কটি পছন্দসই array_intersect ফাংশনের দিকে নিয়ে যায়। একই জিনিস অন্যান্য অপারেশন সঙ্গে আপনার জন্য অপেক্ষা করছে. এটি "প্রোগ্রামারদের কি গণিতের প্রয়োজন?" প্রশ্নের আংশিক উত্তর।

যাইহোক, সেটগুলির সাথে কাজ করার জন্য সমস্ত ভাষার অন্তর্নির্মিত ফাংশন নেই। কিছুতে, আপনাকে এটির জন্য অতিরিক্ত লাইব্রেরি ইনস্টল করতে হবে, এবং কিছুতে, উদাহরণস্বরূপ, রুবিতে, সেট সহ ক্রিয়াকলাপগুলি গাণিতিক অপারেটর (সেটের ইউনিয়ন: coll1 + coll2) ব্যবহার করে প্রয়োগ করা হয়।

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

আসুন প্রাথমিক ক্রিয়াকলাপগুলি দেখি:

ছেদ

সেটগুলির ছেদ হল এমন একটি সেট যাতে উপাদানগুলি অন্তর্ভুক্ত থাকে যা একই সময়ে সমস্ত প্রদত্ত সেটগুলিতে উপস্থিত হয়।

["বস্য", "পেত্য"]

এই ফাংশন যেকোনো সংখ্যক অ্যারে গ্রহণ করে। অর্থাৎ, আপনি একটি কলে যেকোনো সংখ্যক অ্যারের ছেদ খুঁজে পেতে পারেন।

একটি সংগঠন

সেটের মিলন হল একটি সেট যাতে সমস্ত প্রদত্ত সেটের উপাদান থাকে। পিএইচপি-তে সেট ইউনিয়ন এক কল দিয়ে করা যায় না, তবে এটি দুটি ফাংশন সংযুক্ত করে সিমুলেট করা যেতে পারে:

["বস্য", "কোল্যা", "পেত্যা", "ইগর", "পেত্য", "সের্গেই", "ভাস্য", "সাশা"]; // অনন্য ডুপ্লিকেট সরিয়ে দেয় $sharedFriends = array_unique($friends); // => ["ভাস্য", "কোল্যা", "পেত্যা", "ইগর", "সর্গেই", "সাশা"]

সংযোজন (পার্থক্য)

দুটি সেটের পার্থক্য হল একটি সেট যা প্রথম সেটের উপাদানগুলিকে অন্তর্ভুক্ত করে যা দ্বিতীয়টিতে অন্তর্ভুক্ত নয়। প্রোগ্রামিং, এই অপারেশন প্রায়ই বলা হয় পার্থক্য.

["কল্যা"]

ভিড়ের অন্তর্গত

আপনি in_array ফাংশন ব্যবহার করে একটি উপাদান একটি সেটের অন্তর্গত কিনা তা পরীক্ষা করতে পারেন:

টাস্ক
দুটি অ্যারে আছে, এবং আপনি তাদের মিলন খুঁজে পেতে চান (সমস্ত উপাদান, কিন্তু যদি একটি উপাদান উভয় অ্যারেতে থাকে তবে এটি একবার গণনা করা হয়), ছেদ (উভয় অ্যারেতে উপাদান), বা পার্থক্য (একটি অ্যারের উপাদান যা নেই অন্যটি).

সমাধান
একটি ইউনিয়ন সংজ্ঞায়িত করতে:
$union = array_unique(array_merge($a, $b));

ছেদ গণনা করতে:
$ছেদ = array_intersection($a, $b);

একটি সহজ পার্থক্য খুঁজে পেতে:
$পার্থক্য = array_diff($a, $b);

এবং প্রতিসম পার্থক্য পেতে (একচেটিয়া OR):

আলোচনা
এই জাতীয় গণনার জন্য প্রয়োজনীয় অনেক উপাদান পিএইচপি-তে তৈরি করা হয়েছে; আপনাকে কেবল উপযুক্ত ক্রম অনুসারে তাদের একত্রিত করতে হবে।

যখন দুটি অ্যারে থেকে একটি ইউনিয়ন পাওয়া যায়, তখন মূল অ্যারের সমস্ত মান দিয়ে একটি বিশাল অ্যারে তৈরি হয়। কিন্তু array_merge() ফাংশন দুটি সাংখ্যিক অ্যারে মার্জ করার সময় ডুপ্লিকেট মান অনুমোদন করে, তাই আপনাকে array_unique() ফাংশন কল করতে হবে।
যেমন উপাদান ফিল্টার আউট.

যাইহোক, এর ফলে ফাঁক হতে পারে কারণ array_unique() ফাংশন অ্যারেকে কমপ্যাক্ট করে না। যাইহোক, এটি একটি সমস্যা নয় কারণ foreach স্টেটমেন্ট এবং প্রতিটি() ফাংশন উভয়ই হস্তক্ষেপ ছাড়াই কম জনবহুল অ্যারে পরিচালনা করে।

ছেদ গণনা করার জন্য ফাংশনটিকে সহজভাবে বলা হয় array_intersection() এবং কোনো অতিরিক্ত প্রচেষ্টার প্রয়োজন নেই।

array_diff() ফাংশন $old অ্যারের সমস্ত অনন্য উপাদান সমন্বিত একটি অ্যারে প্রদান করে যা $নতুন অ্যারেতে নেই। এটি একটি সাধারণ পার্থক্য বলা হয়:


$পার্থক্য = অ্যারে_ডিফ($পুরানো, $নতুন);
অ্যারে
=> না
=> থেকে
)

ফলে $difference অ্যারেতে "not" এবং "to" আছে কারণ array_diff() কেস সংবেদনশীল। এটি "যাই হোক না কেন" উপাদান অন্তর্ভুক্ত করে না কারণ এটি $old অ্যারেতে নেই।

বিপরীত পার্থক্য পেতে, বা, অন্য কথায়, $পুরানো অ্যারেতে অনুপস্থিত $নতুন অ্যারের অনন্য উপাদানগুলি খুঁজে পেতে, আপনাকে আর্গুমেন্টগুলি অদলবদল করতে হবে:
$old = array("to", "be", "বা", "not", "to", "be");
$new = array("to", "হও", "বা", "যা কিছু");
$reverse_diff = array_diff($new, $old);
অ্যারে
=> যাই হোক না কেন
)

$reverse_diff অ্যারেতে শুধুমাত্র "যা কিছু" উপাদান থাকে।

আপনি যদি array_diff() ফাংশনে একটি ফাংশন বা অন্য ফিল্টার প্রয়োগ করতে চান তবে আপনার নিজস্ব পার্থক্য (বিয়োগ) অ্যালগরিদম এম্বেড করুন:

// একটি কেস-সংবেদনশীল বিয়োগ অ্যালগরিদম প্রয়োগ করুন; পার্থক্য - i
$seen = অ্যারে();
foreach ($n হিসাবে $n) (
$seen++;
}
foreach ($old হিসাবে $o) (
$o = strtolower($o);
যদি (!$seen[$o]) ( $diff[$o] = $o; )
}

প্রথম foreach বিবৃতি আরও অনুসন্ধানের জন্য একটি সহযোগী অ্যারে তৈরি করে।

তারপর এটি $old অ্যারের মাধ্যমে লুপ করে এবং অনুসন্ধানের সময় উপাদানটি না পাওয়া গেলে, এটি $diff অ্যারেতে যোগ করা হয়।

array_diff() এবং array_map() ফাংশন একত্রিত করে এই প্রক্রিয়াটিকে ত্বরান্বিত করা যেতে পারে:

$diff = array_diff(array_map("strtolower", $old),
array_map("strtolower", $new));

সিমেট্রিক পার্থক্য হল যা $a তে আছে কিন্তু $b তে নেই, সাথে যা $b তে আছে কিন্তু $a তে নেই:

$difference = array_merge(array_diff($a, $b), array_diff($b, $a));

একবার প্রতিষ্ঠিত হলে, অ্যালগরিদম এগিয়ে যায়। array_diff() ফাংশনটিকে দুইবার বলা হয় এবং দুটি পার্থক্য নির্ধারণ করে। তারা তারপর একটি অ্যারে একত্রিত করা হয়. array_unique() কল করার কোন প্রয়োজন নেই যেহেতু এই অ্যারেগুলি বিশেষভাবে কোন সাধারণ উপাদান না থাকার জন্য ডিজাইন করা হয়েছে।

এই ফাংশনগুলি আপনাকে বিভিন্ন উপায়ে অ্যারে ম্যানিপুলেট করতে দেয়। অ্যারেগুলি ভেরিয়েবলের সেটগুলি সংরক্ষণ, পরিবর্তন এবং কাজ করার জন্য আদর্শ।

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

পিএইচপি-তে কীভাবে অ্যারে তৈরি এবং ব্যবহার করা হয় সে সম্পর্কে আরও জানতে, এই টিউটোরিয়ালের অ্যারে অধ্যায়টি দেখুন।

স্থাপন

এই বৈশিষ্ট্যগুলি ব্যবহার করার জন্য কোনও ইনস্টলেশনের প্রয়োজন নেই কারণ এগুলি পিএইচপি কোরের অংশ।

পূর্বনির্ধারিত ধ্রুবক

নীচে তালিকাভুক্ত ধ্রুবকগুলি সর্বদা PHP কোরের অংশ হিসাবে উপলব্ধ।

CASE_LOWER(পূর্ণসংখ্যা)

CASE_LOWERফাংশনের সাথে ব্যবহার করা হয় array_change_key_case()অ্যারে কীগুলিকে ছোট হাতের অক্ষরে রূপান্তর করা উচিত কিনা তা নির্দেশ করতে। ডিফল্ট ফাংশন array_change_key_case()এই ধ্রুবক ব্যবহার করা হয়.

CASE_UPPER(পূর্ণসংখ্যা)

CASE_UPPERফাংশনের সাথে ব্যবহার করা হয় array_change_key_case()অ্যারে কীগুলিকে বড় হাতের অক্ষরে রূপান্তর করা উচিত কিনা তা নির্দেশ করতে।

array_change_key_case -- একটি অ্যারে ফেরত দিন যার অক্ষর কীগুলিকে বড় বা ছোট হাতের অক্ষর array_chunk-এ রূপান্তরিত করুন -- একটি অ্যারেকে খণ্ডে ভাগ করুন array_combine -- কী হিসাবে একটি অ্যারে ব্যবহার করে একটি নতুন অ্যারে তৈরি করুন এবং অন্যটি সংশ্লিষ্ট মান হিসাবে অ্যারে_কাউন্ট_মান - - সমস্ত মানের গণনা গণনা করুন array_diff_assoc -- অতিরিক্ত সূচক পরীক্ষা করা array_diff_key-এর সাথে অ্যারে ডাইভারজেন্স গণনা করুন -- array_diff_uassoc- কীগুলির তুলনা করে অ্যারে ডাইভারজেন্স গণনা করুন -- একটি ব্যবহারকারী-সংজ্ঞায়িত ফাংশন অ্যারে_ডিফ_অ্যাসোক ব্যবহার করে সঞ্চালিত অতিরিক্ত সূচক পরীক্ষা সহ অ্যারে ডাইভারজেন্স গণনা করুন -- কী তুলনা কলব্যাক অ্যারে_ডিফ -- অ্যারে ডাইভারজেন্স অ্যারে_ফিল গণনা করুন -- একটি নির্দিষ্ট মানের অ্যারে_ফিল্টার দিয়ে একটি অ্যারে পূরণ করুন -- অ্যারে_ফ্লিপ কলব্যাক ব্যবহার করে একটি অ্যারেতে একটি ফিল্টার প্রয়োগ করুন -- অ্যারে মান অদলবদল করুন array_intersect_assoc -- অতিরিক্ত সূচকের সাথে অ্যারে কনভারজেন্স পরীক্ষা করুন array_intersect_key_intersect -- কীগুলির তুলনা করে অ্যারে ছেদ গণনা করুন array_intersect_uassoc -- ব্যবহারকারী-সংজ্ঞায়িত ফাংশন array_intersect_ukey ব্যবহার করে করা অতিরিক্ত সূচক চেক সহ অ্যারে ছেদ গণনা করুন -- কী তুলনা কলব্যাক অ্যারে_ইন্টারসেক্ট ব্যবহার করে অ্যারে ছেদ গণনা করুন -- অ্যারে কনভারজেন্স অ্যারে_কি_এক্সেক্ট আছে কিনা তা পরীক্ষা করুন -- কী-এ আছে কিনা তা পরীক্ষা করুন অ্যারে অ্যারে_কি-তে উপস্থিত রয়েছে -- অ্যারে অ্যারে_ম্যাপের সমস্ত কী নির্বাচন করুন -- নির্দিষ্ট অ্যারেগুলির সমস্ত উপাদানগুলিতে একটি কলব্যাক ফাংশন প্রয়োগ করুন array_merge_recursive -- পুনরাবৃত্তিমূলকভাবে দুই বা ততোধিক অ্যারে মার্জ করুন array_merge -- দুই বা ততোধিক অ্যারে মার্জ করুন array_multisort -- একাধিক সাজান অ্যারে বা বহুমাত্রিক অ্যারে অ্যারে_প্যাড -- একটি প্রদত্ত মান array_pop-এ একটি অ্যারের আকার বাড়ান -- একটি অ্যারে_প্রোডাক্টের শেষ উপাদান পুনরুদ্ধার করুন -- অ্যারের মানগুলির গুণফল গণনা করুন array_push -- এর শেষে এক বা একাধিক উপাদান যোগ করুন একটি অ্যারে অ্যারে_র্যান্ড -- অ্যারে_রিডুস থেকে এক বা একাধিক র্যান্ডম মান নির্বাচন করুন -- কলব্যাক ফাংশন অ্যারে_রিভার্স ব্যবহার করে পুনরাবৃত্তিমূলকভাবে একটি অ্যারেকে একটি একক মানতে হ্রাস করুন -- বিপরীত ক্রমে অ্যারে_সার্চের উপাদান সহ একটি অ্যারে ফেরত দেয় -- একটি প্রদত্ত মানের জন্য অ্যারে অনুসন্ধান করে এবং অ্যারে_শিফ্ট সফল হলে সংশ্লিষ্ট কীটি ফেরত দেয় -- অ্যারে অ্যারে_স্লাইসের প্রথম উপাদানটি পুনরুদ্ধার করুন - - একটি অ্যারের অ্যারে_স্প্লিসের একটি স্লাইস নির্বাচন করুন - অ্যারের উপাদানগুলির একটি ক্রম সরান এবং এটিকে অন্য ক্রম অ্যারে_সম দিয়ে প্রতিস্থাপন করুন - অ্যারের মানগুলির যোগফল গণনা করুন array_udiff_assoc -- মান তুলনা করতে কলব্যাক ফাংশন array_udiff_uassoc ব্যবহার করে অতিরিক্ত ইনডেক্স চেকিং সহ অ্যারেতে ডাইভারজেন্স গণনা করুন -- অতিরিক্ত ইনডেক্স চেকিং সহ অ্যারেতে ডাইভারজেন্স গণনা করুন, মান এবং সূচকের তুলনা করতে অ্যারে_উডিফ কলব্যাক ফাংশন ব্যবহার করুন -- গণনা করুন তুলনা করার জন্য array_uintersect_assoc কলব্যাক ফাংশন ব্যবহার করে অ্যারে ডাইভারজেন্স -- অতিরিক্ত সূচক চেকিং সহ অ্যারে ইন্টারসেকশন গণনা করুন, মান তুলনা করতে array_uintersect_uassoc কলব্যাক ফাংশন ব্যবহার করে -- সূচক এবং মান তুলনা করতে array_uintersect কলব্যাক ব্যবহার করে অতিরিক্ত সূচক চেকিং সহ অ্যারে ইন্টারসেকশন গণনা করুন- - মান তুলনা করার জন্য array_unique কলব্যাক ব্যবহার করে অ্যারেগুলির ছেদ গণনা করুন -- একটি অ্যারে অ্যারে_আনশিফ্ট থেকে ডুপ্লিকেট মানগুলি সরান -- অ্যারে অ্যারে_মানগুলির শুরুতে এক বা একাধিক উপাদান যুক্ত করুন -- এর সমস্ত মান নির্বাচন করুন একটি অ্যারে অ্যারে_ওয়াক_রিকারসিভ -- অ্যারে অ্যারে_ওয়াকের প্রতিটি উপাদানে পুনরাবৃত্তিমূলকভাবে একটি কাস্টম ফাংশন প্রয়োগ করুন -- অ্যারের অ্যারের প্রতিটি সদস্যের জন্য একটি কাস্টম ফাংশন প্রয়োগ করুন -- একটি অ্যারে আর্সর্ট তৈরি করুন -- বিপরীত ক্রমে অ্যারে সাজান, কীগুলি সংরক্ষণ করে - - অ্যারে সাজান, কীগুলি কম্প্যাক্ট সংরক্ষণ করে -- পরিবর্তনশীল নাম এবং তাদের মান ধারণকারী একটি অ্যারে তৈরি করুন