Συνάρτηση array_multisort

Η συνάρτηση array_multisort επιτρέπει την ταυτόχρονη ταξινόμηση πολλαπλών πινάκων ή την εκτέλεση σύνθετης ταξινόμησης πολυδιάστατων πινάκων σύμφωνα με ένα ή πολλά κριτήρια.

Σύνταξη

phparray_multisort(
  array1, 
  [sorting_order = SORT_ASC], 
  [sorting_type = SORT_REGULAR], 
  array2, 
  array3, 
  ...
);

Παράμετρος sorting_order

Η παράμετρος sorting_order ορίζει την κατεύθυνση ταξινόμησης. Οι τιμές της είναι:

Παράμετρος Περιγραφή
SORT_ASC Ταξινόμηση σε αύξουσα σειρά (προεπιλεγμένη τιμή).
SORT_DESC Ταξινόμηση σε φθίνουσα σειρά.

Παράμετρος sorting_type

Η παράμετρος sorting_type ορίζει τον τύπο σύγκρισης των στοιχείων. Οι τιμές της είναι:

Παράμετρος Περιγραφή
SORT_REGULAR Συνηθισμένη σύγκριση στοιχείων (από προεπιλογή).
SORT_NUMERIC Αριθμητική σύγκριση στοιχείων.
SORT_STRING Συμβολοσειρική σύγκριση στοιχείων.
SORT_LOCALE_STRING Συμβολοσειρική σύγκριση λαμβάνοντας υπόψη την τρέχουσα τοπική ρύθμιση.
SORT_NATURAL Φυσική ταξινόμηση συμβολοσειρών (όπως στον Εξερευνητή).
SORT_FLAG_CASE Συνδυάζεται με SORT_STRING ή SORT_NATURAL για ταξινόμηση χωρίς διάκριση πεζών/κεφαλαίων.

Παράδειγμα

Ταξινόμηση δύο πινάκων με καθορισμό παραμέτρων:

php<?php
  $numbers = [10, 2, 15, 4];
  $letters = ['b', 'a', 'd', 'c'];
  array_multisort(
    $numbers, SORT_DESC, SORT_NUMERIC,
    $letters, SORT_ASC, SORT_STRING
  );
  print_r($numbers);
  print_r($letters);
?>

Αποτέλεσμα εκτέλεσης κώδικα:

php[15, 10, 4, 2]
['d', 'b', 'c', 'a']

Παράδειγμα

Ταξινόμηση πολυδιάστατου πίνακα σύμφωνα με ένα καθορισμένο πεδίο:

php<?php
  $data = [
    ['name' => 'John', 'age' => 25],
    ['name' => 'Alice', 'age' => 22],
    ['name' => 'Bob', 'age' => 30]
  ];
  
  $ages = array_column($data, 'age');
  array_multisort($ages, SORT_ASC, $data);
  print_r($data);
?>

Αποτέλεσμα εκτέλεσης κώδικα:

php[
  ['name' => 'Alice', 'age' => 22],
  ['name' => 'John', 'age' => 25],
  ['name' => 'Bob', 'age' => 30]
]

Παράδειγμα

Ταξινόμηση πολυδιάστατου πίνακα σύμφωνα με δύο καθορισμένα πεδία:

php<?php
  $data = [
    ['name' => 'John', 'age' => 25],
    ['name' => 'alice', 'age' => 22],
    ['name' => 'Bob', 'age' => 30]
  ];
  
  $names = array_column($data, 'name');
  $ages = array_column($data, 'age');
  array_multisort(
    $names, SORT_ASC, SORT_STRING | SORT_FLAG_CASE,
    $ages, SORT_DESC,
    $data
  );
  print_r($data);
?>

Αποτέλεσμα εκτέλεσης κώδικα:

php[
  ['name' => 'alice', 'age' => 22],
  ['name' => 'Bob', 'age' => 30],
  ['name' => 'John', 'age' => 25]
]

Παράδειγμα

Φυσική ταξινόμηση συμβολοσειρών:

php<?php
  $files = ['file1.txt', 'file10.txt', 'file2.txt'];
  array_multisort($files, SORT_ASC, SORT_NATURAL);
  print_r($files);
?>

Αποτέλεσμα εκτέλεσης κώδικα:

php['file1.txt', 'file2.txt', 'file10.txt']

Παράδειγμα

Ταξινόμηση χωρίς διάκριση πεζών/κεφαλαίων:

php<?php
  $words = ['Apple', 'banana', 'cherry', 'apricot'];
  array_multisort($words, SORT_ASC, SORT_STRING | SORT_FLAG_CASE);
  print_r($words);
?>

Αποτέλεσμα εκτέλεσης κώδικα:

php['Apple', 'apricot', 'banana', 'cherry']

Δείτε επίσης

  • τη συνάρτηση sort,
    που ταξινομεί σε αύξουσα σειρά στοιχείων
  • τη συνάρτηση rsort,
    που ταξινομεί σε φθίνουσα σειρά στοιχείων
  • τη συνάρτηση ksort,
    που ταξινομεί σε αύξουσα σειρά κλειδιών
  • τη συνάρτηση krsort,
    που ταξινομεί σε φθίνουσα σειρά κλειδιών
  • τη συνάρτηση asort,
    που ταξινομεί σε αύξουσα σειρά στοιχείων με διατήρηση κλειδιών
  • τη συνάρτηση arsort,
    που ταξινομεί σε φθίνουσα σειρά στοιχείων με διατήρηση κλειδιών
  • τη συνάρτηση natsort,
    που ταξινομεί με φυσικό τρόπο
  • τη συνάρτηση natcasesort,
    που ταξινομεί με φυσικό τρόπο χωρίς διάκριση πεζών/κεφαλαίων
  • τη συνάρτηση usort,
    που ταξινομεί σύμφωνα με callback
  • τη συνάρτηση uksort,
    που ταξινομεί σύμφωνα με callback για τα κλειδιά
  • τη συνάρτηση uasort,
    που ταξινομεί σύμφωνα με callback με διατήρηση κλειδιών