PHP Array Sorting Functions Part-3: PHP array ksort, krsort and uksort function

PHP 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()

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 উপস্থাপনা এখানে দেওয়া হলো:

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

<?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

<?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()

<?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()

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 উপস্থাপনা এখানে দেওয়া হলো:

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

<?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

<?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 সাজানোর জন্য:

<?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()

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 উপস্থাপনা এখানে দেওয়া হলো:

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

<?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

<?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

আমি মাসুদ আলম, বাংলাদেশের ৩৬ তম Zend Certified Engineer । ২০০৯ সালে কম্পিউটার সাইন্স থেকে বেচেলর ডিগ্রী অর্জন করি। দীর্ঘ ১৫ বছর আমি Winux Soft, SSL Wireless, IBCS-PRIMAX, Max Group, Canadian International Development Agency (CIDA), Care Bangladesh, World Vision, Hellen Keller, Amarbebsha Ltd সহ বিভিন্ন দেশি বিদেশী কোম্পানিতে ডেটা সাইন্স, মেশিন লার্নিং, বিগ ডেটা, ওয়েব ডেভেলপমেন্ট এবং সফটওয়্যার ডেভেলপমেন্ট এর উপর বিভিন্ন লিডিং পজিশন এ চাকরি এবং প্রজেক্ট লিড করি। এছাড়াও বাংলাদেশের ১৮৫ জন জেন্ড সার্টিফাইড ইঞ্জিনিয়ার এর মধ্যে ১২০ এরও অধিক ছাত্র আমার হাতে জেন্ড সার্টিফাইড ইঞ্জিনিয়ার হয়েছেন। বর্তমানে w3programmers ট্রেনিং ইনস্টিটিউট এ PHP এর উপর Professional এবং Advance Zend Certified PHP -8.2 Engineering, Laravel Mastering Course with ReactJS, Python Beginning To Advance with Blockchain, Machine Learning and Data Science, Professional WordPress Plugin Development Beginning to Advance কোর্স করাই। আর অবসর সময়ে w3programmers.com এ ওয়েব টেকনোলজি নিয়ে লেখালেখি করি।

Leave a Reply