Bagaimana cara mengurutkan Array dari Array Asosiatif berdasarkan Nilai Kunci yang Diberikan di PHP?

Setiap entri dalam array asosiatif dicirikan oleh pasangan nilai kunci yang unik. Array dapat berisi tipe data tunggal milik variabel atau array lain sebagai elemennya. Ada beberapa cara untuk mengurutkan array dari array asosiatif berdasarkan nilai kunci yang ditentukan.

Pendekatan 1: Menggunakan array_multisort() metode

Itu array_multisort() metode yang digunakan untuk mengembalikan array yang diurutkan. Kunci string akan dipertahankan, tetapi kunci numerik diindeks ulang, dan dimulai dari 0 dan bertambah 1. Fungsi ini dapat mengurutkan beberapa array sekaligus atau array multidimensi.

array_multisort(array, sort_order, sort_type);

Contoh: Dalam pendekatan ini, awalnya sebuah array dari array asosiatif didefinisikan. Kemudian, array baru dibuat untuk menyimpan kunci sebagai atribut dari array utama yang ingin kita sortir. Metode array_multisort() kemudian diterapkan ke array yang dibuat ini dan jenis pengurutan yang diinginkan. Dalam hal dua atau lebih kunci yang sama, nilai muncul dalam urutan penyimpanan.

PHP

<?php 

 #declaring an associative array

$arr = array(

   array("Name"=>"YASHIKA", "marks"=>22),

   array("Name"=>"ASHIKA", "marks"=>67),

   array("Name"=>"BASHIKA", "marks"=>87),

   array("Name"=>"YASHITA", "marks"=>24),

   array("Name"=>"AMAN", "marks"=>55),

   array("Name"=>"ANjali", "marks"=>98),

   array("Name"=>"YASHIKA", "marks"=>100),   

);

#declaring an array to store names

$names = array();

#iterating over the arr

foreach ($arr as $key => $val)

{

  #storing the key of the names array as the Name key of the arr

    $names[$key] = $val['Name'];

     

}

#apply multisort method

array_multisort($names, SORT_ASC, $arr);

print_r("Modified Array : ");

print_r($arr);  

?>

Keluaran:

Modified Array : Array
(
    [0] => Array
        (
            [Name] => AMAN
            [marks] => 55
        )

    [1] => Array
        (
            [Name] => ANjali
            [marks] => 98
        )

    [2] => Array
        (
            [Name] => ASHIKA
            [marks] => 67
        )

    [3] => Array
        (
            [Name] => BASHIKA
            [marks] => 87
        )

    [4] => Array
        (
            [Name] => YASHIKA
            [marks] => 22
        )

    [5] => Array
        (
            [Name] => YASHIKA
            [marks] => 100
        )

    [6] => Array
        (
            [Name] => YASHITA
            [marks] => 24
        )
)

Penjelasan: Array utama diurutkan berdasarkan nama dalam urutan menaik.

Pendekatan 2: Menggunakan usort() metode

Metode ini mengurutkan array yang diberikan menggunakan fungsi perbandingan yang ditentukan pengguna. Fungsi yang ditentukan pengguna harus mengembalikan integer <, =, atau > daripada 0 jika argumen pertama adalah <, =, atau > daripada argumen kedua. Metode ini memberikan kunci baru ke elemen dalam array. Itu hanya menghapus kunci yang ada yang mungkin telah ditetapkan, bukan hanya sekadar menyusun ulang kunci.

usort(array, user_def_func)

Contoh:

PHP

<?php 

#sort in descending order

function DescSort($val1,$val2)

{

  #check if both the values are equal

    if ($val1['marks'] == $val2['marks']) return 0;

  #check if not equal, then compare values

    return ($val1['marks'] < $val2['marks']) ? 1: -1;

}

#declaring an associative array

$arr = array(

   array("Name"=>"YASHIKA", "marks"=>22),

   array("Name"=>"ASHIKA", "marks"=>67),

   array("Name"=>"BASHIKA", "marks"=>87),

   array("Name"=>"YASHITA", "marks"=>24),

   array("Name"=>"AMAN", "marks"=>55),

   array("Name"=>"ANjali", "marks"=>98),

   array("Name"=>"YASHIKA", "marks"=>100),   

);

#apply usort method on the array

usort($arr,'DescSort');

print_r("Modified Array : ");

print_r($arr);

?>

Keluaran: Metode DescSort() mengurutkan tanda dalam urutan menurun.

Modified Array : Array
(
    [0] => Array
        (
            [Name] => YASHIKA
            [marks] => 100
        )

    [1] => Array
        (
            [Name] => ANjali
            [marks] => 98
        )

    [2] => Array
        (
            [Name] => BASHIKA
            [marks] => 87
        )

    [3] => Array
        (
            [Name] => ASHIKA
            [marks] => 67
        )

    [4] => Array
        (
            [Name] => AMAN
            [marks] => 55
        )

    [5] => Array
        (
            [Name] => YASHITA
            [marks] => 24
        )

    [6] => Array
        (
            [Name] => YASHIKA
            [marks] => 22
        )
)