PHP Sorting Arrays (সর্টিং অ্যারে) PHP ইউসর্ট (usort() ) Estimated reading: 2 minutes 8 views Contributors সারাংশ: এই টিউটোরিয়ালে, আপনি শিখবেন কিভাবে PHP usort() function ব্যবহার করে user-defined comparison function ব্যবহার করে array সাজাতে হয়। PHP ইউসর্ট ফাংশনের ভূমিকাঃ এখন পর্যন্ত, আপনি বিল্ট ইন কম্পেরিজন অপারেটর ব্যবহার করে array সাজাতে শিখেছেন।উদাহরণ স্বরূপ, আপনি যখন sort() ফাংশন ব্যবহার করেন অ্যারে সাজানোর জন্য, তখন PHP বিল্ট ইন কম্পেরিজন অপারেটর ব্যবহার করে, নাম্বার কম্পেয়ার করেন।usort(array &$array, callable $callback): boolusort() ফাংশনের দুটি প্যারামিটার রয়েছেঃ$array হল ইনপুট অ্যারে. $callback হল কাস্টম কম্পেরিজন ফাংশন.usort() ফাংশন সফল বা মিথ্যা বা ব্যার্থ এর ক্ষেত্রে true ফেরত দেয়। নিছে $callback-এর সিন্ট্যাক্স রয়েছেঃcallback(mixed $x, mixed $y): int$callback ফাংশনের দুটি প্যারামিটার রয়েছে, যা তুলনা করার জন্য অ্যারে উপদান রয়েছে।$callback ফাংশন দুটি উপাদান এর ($x এবং $y) তুলনা করে এবং একটি পূর্ণসংখ্যা ভেল্যু প্রদান করে:শূণ্য (0) মানে $x আর $y এর সমান। একটি নেগেটিভ নাম্বার মানে $x এর আগে $y . একটি পজিটিভ নাম্বার মানে $x এর পরে $y .usort() ফাংশন ব্যবহার করার কিছু উদাহরণ দেখা যাক।১) নাম্বার অ্যারে সাজানোর জন্য PHP ইউসর্ট ফাংশন ব্যবহার করে।নিম্নোক্ত উদাহরণ ব্যাখ্যা করে, কিভাবে নাম্বার অ্যারে সাজানোর জন্য usort() ফাংশন ব্যবহার করতে হয়ঃ<?php $numbers = [2, 1, 3]; usort($numbers, function ($x, $y) { if ($x === $y) { return 0; } return $x < $y ? -1 : 1; }); print_r($numbers);আউটপুটঃArray ( [0] => 1 [1] => 2 [2] => 3 ) এটা কিভাবে কাজ করে.প্রথমে তিনটি সংখ্যা 2, 1 এবং 3 এর একটি অ্যারে ডিফাইন করুন। দ্বিতীয়ত, $numbers অ্যারে সাজানোর জন্য usort()ফাংশন ব্যবহার করুন। দুটি সংখ্যা সমান হলে কলব্যাক ফাংশন 0 রিটার্ন করে, প্রথম সংখ্যাটি দ্বিতীয়টির চেয়ে কম হলে -1, এবং প্রথম সংখ্যাটি দ্বিতীয়টির চেয়ে বড় হলে 1 প্রদান করে।অ্যারে উপাদানকে নিম্নমুখী ক্রমে সাজানোর জন্য, আপনাকে কম্পেরিজন ফাংশন-এ যুক্তি পরিবর্তন করতে হবে:<?php $numbers = [2, 1, 3]; usort($numbers, function ($x, $y) { if ($x === $y) { return 0; } return $x < $y ? 1 : -1; }); print_r($numbers);আপনি যদি PHP 7 বা নতুন ব্যবহার করেন, তাহলে কোডটিকে আরও সংক্ষিপ্ত করতে আপনি স্পেসশীপ অপারেটর (<=>) ব্যবহার করতে পারেনঃ$x <=> $yস্পেসশীপ অপারেটর দুটি এক্সপ্রেশন এর তুলনা করে এবং -1, 0, বা 1 রিটার্ন করে যখন $x যথাক্রমে $y-এর থেকে কম, সমান বা বড় হয়। উদাহরণ স্বরূপঃ<?php $numbers = [2, 1, 3]; usort($numbers, function ($x, $y) { return $x <=> $y; }); print_r($numbers);কলব্যাক সহজ হলে, আপনি এইটার মত একটি অ্যারো ফাংশন ব্যবহার করতে পারেনঃ<?php $numbers = [2, 1, 3]; usort($numbers, fn ($x, $y) => $x <=> $y); print_r($numbers);মনে রাখবেন যে, PHP 7.4 থেকে অ্যারো ফাংশন চালু করেছে।২) PHP ইউসর্ট ফাংশন ব্যবহার করে দৈর্ঘ অনুসারে স্ট্রিং এর অ্যারে সাজানোনিচের উদাহরণ দৈর্ঘ অনুসারে নামের array সাজানোর জন্য usort() ফাংশন ব্যবহার করেঃ<?php $names = [ 'Alex', 'Peter', 'John' ]; usort($names, fn($x,$y) => strlen($x) <=> strlen($y)); var_dump($names);আউটপুটঃArray(3) { [0]=> string(4) "Alex" [1]=> string(4) "John" [2]=> string(5) "Peter" }৩) অবজেক্ট অ্যারে সাজাতে PHP ইউসর্ট ফাংশন ব্যবহার করেঃনিম্নলিখিত উদাহরণ age প্রপার্টি অনুসারে Person অবজেক্ট এর একটি অ্যারে সাজানোর জন্য usort() ফাংশন ব্যবহার করে।<?php class Person { public $name; public $age; public function __construct(string $name, int $age) { $this->name = $name; $this->age = $age; } } $group = [ new Person('Bob', 20), new Person('Alex', 25), new Person('Peter', 30), ]; usort($group, fn($x, $y) => $x->age <=> $y->age); print_r($group);আউটপুটঃArray ( [0] => Person Object ( [name] => Bob [age] => 20 ) [1] => Person Object ( [name] => Alex [age] => 25 ) [2] => Person Object ( [name] => Peter [age] => 30 ) )এটা কিভাবে কাজ করেঃ-প্রথমে, একটি Person ক্লাস ডিফাইন করুন যার দুটি প্রপার্টিজ রয়েছে: name এবং age। দ্বিতীয়ত, Person অবজেক্ট ধারণ করে এমন $group অ্যারে ডিফাইন করুন। তৃতীয়ত, $group অ্যারের Person অবজেক্টকে সাজানোর জন্য usort() ফাংশন ব্যবহার করুন। usort() ফাংশন-এ কম্পেরিজন ফাংশন ব্যবহার করে যা দুটি Person অবজেক্ট এর বয়স তুলনা করে।আপনি যদি Person অবজেক্ট এর নাম অনুসারে সাজাতে চান, তাহলে আপনি এইভাবে $name তুলনা করতে পারেন:usort($group, fn($x, $y) => $x->name <=> $y->name);একটি কলব্যাক হিসাবে একটি স্টাটিক মেথড ব্যবহার করে।নিম্নলিখিত উদাহরণ usort() ফাংশন এর জন্য কলব্যাক হিসাবে ক্লাস এর একটি স্টাটিক মেথড ব্যবহার করে:<?php class Person { public $name; public $age; public function __construct(string $name, int $age) { $this->name = $name; $this->age = $age; } } class PersonComparer { public static function compare(Person $x, Person $y) { return $x->age <=> $y->age; } } $group = [ new Person('Bob', 20), new Person('Alex', 25), new Person('Peter', 30), ]; usort($group, ['PersonComparer', 'compare']); print_r($group);এই উদাহরণে, আমরা PersonComparer ক্লাস ডিফাইন করি, যেটিতে compare() স্টাটিক মেথড রয়েছে।compare() স্টাটিক মেথড স্পেসশীপ অপারেটর ব্যবহার করে বয়স অনুসারে দুটি Person অবজেক্ট এর কম্পেয়ার করে।usort() ফাংশন কলব্যাক হিসাবে PersonComparer ক্লাস এর compare() স্টাটিক মেথড ব্যবহার করতে আপনি একটি অ্যারে পাস করেন যাতে দুটি উপাদান রয়েছেঃusort($group, ['PersonComparer', 'compare']);প্রথম উপাদান ক্লাসের নাম এবং দ্বিতীয়টি স্টাটিক মেথড.সারাংশইউজার ডিফাইন কম্পেরিজন ফাংশন ব্যবহার করে একটি অ্যারে সাজানোর জন্য PHP usort() ফাংশন ব্যবহার করুন। PHP Sorting Arrays (সর্টিং অ্যারে) - Previous PHP এ-সর্ট ( asort() ) Next - PHP Sorting Arrays (সর্টিং অ্যারে) PHP কেসর্ট (ksort() )