PHP Array Sorting Functions
PHP Array Sorting Functions Part-3: PHP array ksort, krsort and uksort function
PHP সহ যেকোনো Language এই Sorting একটি গুরুত্বপূর্ণ বিষয়, আজকের পর্বে আমরা PHP Language এর Built-in Sorting Function গুলোর মধ্যে ksort, krsort, and uksort এই Function গুলো নিয়ে আলোচনা করব।
PHP ksort() Function
ইতিপূর্বে আমাদের দেখানো সবগুলো Sorting ই ছিল Value এর উপর ভিত্তি করে Sorting করা। , আপনি চাইলে array এর key কেও sorting করতে পারেন। PHP তে key এর ভিত্তিতে ascending order এ sorting করার জন্য ksort function টি ব্যবহৃত হয় ।
PHP ksort() function syntax()
1 | ksort( array & $array , int $flags = SORT_REGULAR): true |
Parameters:
- $array: এখানে input array টি থাকবে।
- flags: optional second parameter টি flags এই মানগুলি ব্যবহার করে সাজানোর আচরণ পরিবর্তন করতে ব্যবহার করা যেতে পারে:
Sorting type flags:
- SORT_REGULAR – সাধারণভাবে আইটেম তুলনা করে ;
- SORT_NUMERIC – আইটেমগুলিকে numerically তুলনা করে ৷
- SORT_STRING – আইটেমগুলিকে string হিসেবে তুলনা করে।
- SORT_LOCALE_STRING – setlocale() current locale এর উপর ভিত্তি করে আইটেমগুলিকে স্ট্রিং হিসাবে তুলনা করে । এটি setlocale()ব্যবহার করে পরিবর্তন করা যেতে পারে
- SORT_NATURAL – natsort() এর মত “natural ordering” ব্যবহার করে আইটেমগুলিকে স্ট্রিং হিসাবে তুলনা করে।
- SORT_FLAG_CASE – case-insensitively স্ট্রিংগুলি সাজানোর জন্য SORT_STRING বা SORT_NATURAL এর সাথে (বিটওয়াইজ বা) একত্রিত করা যেতে পারে
PHP ksort ফাংশন কিভাবে কাজ করে?
PHP -তে ksort ফাংশন কীভাবে কাজ করে তার একটি pseudocode উপস্থাপনা এখানে দেওয়া হলো:
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 | Function ksort(inputArray, sortFlags) Create a copy of the inputArray called sortedArray Create an array called sortedKeys and store the keys of inputArray if sortFlags is specified, apply the specified sorting rules to sortedKeys Sort sortedKeys in ascending order based on the sorting rules Create an empty array called finalArray for each key in sortedKeys store the corresponding value from sortedArray in a temporary variable add the key-value pair to finalArray using the key from sortedKeys and the value from the temporary variable return finalArray End Function |
এই সিউডোকোডে, আমরা প্রথমে input অ্যারের একটি কপি তৈরি করি, এবং key গুলি বের করি, প্রদত্ত sorting rules (যদি থাকে) এর উপর ভিত্তি করে key গুলি বাছাই করি এবং তারপর sorted key গুলির উপর ভিত্তি করে key-value জোড়াগুলিকে rearrange অর্থাৎ পুনর্বিন্যাস করি। SortFlags প্যারামিটারটি optional এবং sorting options গুলি নির্দিষ্ট করতে ব্যবহার করা যেতে পারে।
নিচের উদাহরণ দেখুন :
Example #1 ksort() example
1 2 3 4 5 6 7 | <?php $fruits = array ( "d" => "lemon" , "a" => "orange" , "b" => "banana" , "e" => "apple" ); ksort( $fruits ); echo "<pre>" ; print_r( $fruits ); echo "</pre>" ; ?> |
Output
Array ( [a] => orange [b] => banana [d] => lemon [e] => apple )
Example #2 ksort() with int keys
1 2 3 4 5 6 | <?php $a = [0 => 'First' , 2 => 'Last' , 1 => 'Middle' ]; print_r( $a ); ksort( $a ); print_r( $a ); ?> |
Output
Array ( [0] => First [2] => Last [1] => Middle ) Array ( [0] => First [1] => Middle [2] => Last )
Example #3 a practical example of ksort()
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 | <?php // Sample associative array of countries and their populations $countries = array ( 'Germany' => 83019200, 'France' => 67160000, 'Spain' => 47020000, 'Italy' => 60483973, 'United Kingdom' => 66435600 ); // Use ksort to sort the array by country names in ascending order ksort( $countries ); // Now $countries is sorted by country names (keys) in ascending order foreach ( $countries as $country => $population ) { echo $country . ": " . number_format( $population ) . " people\n" ; } |
Output
France: 67,160,000 people Germany: 83,019,200 people Italy: 60,483,973 people Spain: 47,020,000 people United Kingdom: 66,435,600 people
PHP krsort() Function
PHP তে krsort টি ও ksort এর মতোই , তবে এটি ascending order এর পরিবর্তে Descending Order এ array এর key গুলোকে Sorting করে ।
PHP krsort() function syntax()
1 | krsort( array & $array , int $flags = SORT_REGULAR): true |
Parameters:
- $array: এখানে input array টি থাকবে।
- flags: optional second parameter টি flags এই মানগুলি ব্যবহার করে সাজানোর আচরণ পরিবর্তন করতে ব্যবহার করা যেতে পারে:
Sorting type flags:
- SORT_REGULAR – সাধারণভাবে আইটেম তুলনা করে ;
- SORT_NUMERIC – আইটেমগুলিকে numerically তুলনা করে ৷
- SORT_STRING – আইটেমগুলিকে string হিসেবে তুলনা করে।
- SORT_LOCALE_STRING – setlocale() current locale এর উপর ভিত্তি করে আইটেমগুলিকে স্ট্রিং হিসাবে তুলনা করে । এটি setlocale()ব্যবহার করে পরিবর্তন করা যেতে পারে
- SORT_NATURAL – natsort() এর মত “natural ordering” ব্যবহার করে আইটেমগুলিকে স্ট্রিং হিসাবে তুলনা করে।
- SORT_FLAG_CASE – case-insensitively স্ট্রিংগুলি সাজানোর জন্য SORT_STRING বা SORT_NATURAL এর সাথে (বিটওয়াইজ বা) একত্রিত করা যেতে পারে
PHP krsort ফাংশন কিভাবে কাজ করে?
PHP -তে krsort ফাংশন কীভাবে কাজ করে তার একটি pseudocode উপস্থাপনা এখানে দেওয়া হলো:
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 | Function krsort(inputArray, sortFlags) Create a copy of the inputArray called sortedArray Create an array called sortedKeys and store the keys of inputArray if sortFlags is specified, apply the specified sorting rules to sortedKeys Sort sortedKeys in descending order based on the sorting rules Create an empty array called finalArray for each key in sortedKeys store the corresponding value from sortedArray in a temporary variable add the key-value pair to finalArray using the key from sortedKeys and the value from the temporary variable return finalArray End Function |
এই সিউডোকোডে, আমরা প্রথমে ইনপুট অ্যারের একটি কপি তৈরি করি, এবং key গুলি বের করি, প্রদত্ত sorting rule গুলির উপর ভিত্তি করে key গুলিকে সাজাই (যদি থাকে), এবং তারপরে সাজানো key গুলির উপর ভিত্তি করে কী-মানের জোড়াগুলিকে descending order এ সাজাই। SortFlags প্যারামিটারটি ঐচ্ছিক এবং sorting options গুলি নির্দিষ্ট করতে ব্যবহার করা যেতে পারে।
নিচের উদাহরণ দেখুন :
Example #1 krsort() example
1 2 3 4 5 6 7 | <?php $fruits = array ( "d" => "lemon" , "a" => "orange" , "b" => "banana" , "e" => "apple" ); krsort( $fruits ); echo "<pre>" ; print_r( $fruits ); echo "</pre>" ; ?> |
Output
Array ( [e] => apple [d] => lemon [b] => banana [a] => orange )
Example #2 krsort() with int keys
1 2 3 4 5 6 | <?php $a = [0 => 'First' , 2 => 'Last' , 1 => 'Middle' ]; print_r( $a ); krsort( $a ); print_r( $a ); ?> |
Output
Array ( [0] => First [2] => Last [1] => Middle ) Array ( [2] => Last [1] => Middle [0] => First )
Example #3 a practical example of krsort()
PHP -তে krsort ফাংশন ব্যবহার করার একটি ব্যবহারিক উদাহরণ হল descending order এ একটি associative array সাজানোর জন্য:
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 | <?php // Sample associative array of movie release years and their titles $movies = array ( '1994' => 'Pulp Fiction' , '1972' => 'The Godfather' , '2008' => 'The Dark Knight' , '1980' => 'The Empire Strikes Back' , '1993' => 'Schindler\'s List' ); // Use krsort to sort the array by release years in descending order krsort( $movies ); // Now $movies is sorted by release years (keys) in descending order foreach ( $movies as $year => $title ) { echo $year . ": " . $title . "\n" ; } |
Output
2008: The Dark Knight 1994: Pulp Fiction 1993: Schindler's List 1980: The Empire Strikes Back 1972: The Godfather
PHP uksort() Function
PHP তে একটি array এর key গুলোকে একটি নির্দিষ্ট callback function দিয়ে sorting করার জন্য uksort ফাঙ্কশনটি ব্যবহৃত হয়।
PHP uksort() function syntax()
1 | uksort( array & $array , callable $callback ): true |
Parameters:
- $array: এখানে input array টি থাকবে।
- callback:একটি user-defined function যা array থেকে দুটি element এর তুলনা করে এবং তাদের order অর্থাৎ ক্রম নির্ধারণ করে। callback function টি একটি positive integer রিটার্ন করবে যদি প্রথম element টি দ্বিতীয়টির পরে আসে, একটি negative integer যদি এটি আগে আসে, বা zero (শূন্য) যদি তাদের অর্ডার পরিবর্তন করার প্রয়োজন না হয়।
PHP uksort ফাংশন কিভাবে কাজ করে?
PHP -তে uksort ফাংশন কীভাবে কাজ করে তার একটি pseudocode উপস্থাপনা এখানে দেওয়া হলো:
01 02 03 04 05 06 07 08 09 10 11 12 13 14 | Function uksort(inputArray, comparisonFunction) Create a copy of the inputArray called sortedArray Create an array called sortedKeys and store the keys of inputArray Apply the custom comparison function (comparisonFunction) to sort sortedKeys Create an empty array called finalArray for each key in sortedKeys store the corresponding value from sortedArray in a temporary variable add the key-value pair to finalArray using the key from sortedKeys and the value from the temporary variable return finalArray End Function |
নিচের উদাহরণ দেখুন :
Example #1 uksort() example
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | <?php function cmpasc( $a , $b ){ if ( $a == $b ){ return 0; } return ( $a < $b ) ? -1 : 1; } function cmpdesc( $a , $b ) { if ( $a == $b ) { return 0; } return ( $a > $b ) ? -1 : 1; } $a = $b = array ( "a" =>3, "b" =>2, "f" =>5, "d" =>6, "e" =>1); uksort( $a , "cmpasc" ); echo "Ascending Order Sorting By Callback Function" ; echo "<pre>" ; print_r( $a ); echo "</pre>" ; echo "Descending Order Sorting By Callback Function" ; uksort( $b , "cmpdesc" ); echo "<pre>" ; print_r( $b ); echo "</pre>" ; ?> |
Output
Ascending Order Sorting By Callback Function Array ( [a] => 3 [b] => 2 [d] => 6 [e] => 1 [f] => 5 ) Descending Order Sorting By Callback Function Array ( [f] => 5 [e] => 1 [d] => 6 [b] => 2 [a] => 3 )
Example #2 uksort() example
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 | <?php function cmp( $a , $b ) { $a = preg_replace( '@^(a|an|the) @' , '' , $a ); $b = preg_replace( '@^(a|an|the) @' , '' , $b ); return strcasecmp ( $a , $b ); } $a = array ( "John" => 1, "the Earth" => 2, "an apple" => 3, "a banana" => 4); uksort( $a , "cmp" ); foreach ( $a as $key => $value ) { echo "$key: $value\n" ; } ?> |
Output
an apple: 3 a banana: 4 the Earth: 2 John: 1