Ταξινόμηση ενός πίνακα php με διάφορους τρόπους.

Ηλεκτρονική 06.08.2019
Επισκόπηση προγράμματος Η έκδοση υπολογιστή του Microsoft Excel Viewer θα επιτρέψει...

Chercher

Ηλεκτρονική
array_reverse

Τακτοποίηση στοιχείων πίνακα με αντίστροφη σειρά.

Η συνάρτηση array_reverse() επιστρέφει έναν πίνακα του οποίου τα στοιχεία είναι με την αντίστροφη σειρά του πίνακα που έχει περάσει ως παράμετρος. Σε αυτήν την περίπτωση, οι συνδέσεις μεταξύ κλειδιών και τιμών δεν χάνονται εάν η πρόσθετη παράμετρος save_keys = TRUE.

Ένα παράδειγμα χρήσης της συνάρτησης array_reverse():

$result = array_reverse($input);
$result_keyed = array_reverse($input, true);
?>

Αυτό το παράδειγμα θα δημιουργήσει και τους πίνακες $result και $result_keyed με τις ίδιες τιμές αλλά διαφορετικά κλειδιά. Η εκτύπωση των πινάκων $result και $result_keyed θα είναι η εξής:

Παράταξη(
=>Πίνακας
=> πράσινο
=> κόκκινο
)

=> 4
=> php
Παράταξη(
=>Πίνακας
=> πράσινο
=> κόκκινο
)

=> 4
=> php
)

Σημείωση: Μια δεύτερη παράμετρος save_keys προστέθηκε στην PHP 4.0.3.

natcasesort

Εκτελεί ένα φυσικό είδος πίνακα χωρίς διάκριση πεζών-κεφαλαίων.
array_reverse

Void natcasesort (arr array)

Η συνάρτηση natcasesort() ταξινομεί τον πίνακα arr με φυσική σειρά για τους ανθρώπους, διατηρώντας τους συσχετισμούς ευρετηρίου.
Αυτή η συνάρτηση είναι παρόμοια με την natsort(), αλλά δεν κάνει διάκριση πεζών-κεφαλαίων.
Παράδειγμα χρήσης της συνάρτησης natcasesort():

"img2.png", "img1.png", "IMG3.png");

sort($array1);

print_r($array1);

natcasesort($array2);
echo "nΦυσική ταξινόμηση (χωρίς διάκριση πεζών-κεφαλαίων)n";
print_r($array2);
?>

Το παράδειγμα που δίνεται θα δώσει τα ακόλουθα:

Τυπικός πίνακας ταξινόμησης(
=> IMG0.png
=> IMG3.png
=> img1.png
=> img10.png
=> img12.png
=> img2.png
)

Φυσική ταξινόμηση (χωρίς διάκριση πεζών-κεφαλαίων)
Παράταξη(
=> IMG0.png
=> img1.png
=> img2.png
=> IMG3.png
=> img10.png
=> img12.png
)

Λειτουργία που υποστηρίζεται από PHP 4, PHP 5

Προσαρμοσμένη ταξινόμηση ενός συσχετιστικού πίνακα διατηρώντας παράλληλα συσχετίσεις ευρετηρίου.
array_reverse

Bool uasort (στοιχείο πίνακα, συνάρτηση cmp_function)

Η συνάρτηση uasort() ταξινομεί τον πίνακα πίνακα διατηρώντας συσχετισμούς ευρετηρίου, χρησιμοποιώντας τη συνάρτηση που ορίζεται από το χρήστη που καθορίζεται από το cmp_function για τη σύγκριση δεικτών στοιχείων.
Αυτή η συνάρτηση χρησιμοποιείται κυρίως όταν η αντιστοιχία μεταξύ των δεικτών και των τιμών του πίνακα είναι σημαντική.
Η συνάρτηση uasort() επιστρέφει true εάν η ταξινόμηση είναι επιτυχής και false διαφορετικά.
Σημείωση: Δείτε τις συναρτήσεις usort() και uksort() για τη σύνταξη μιας προσαρμοσμένης συνάρτησης.
Λειτουργία που υποστηρίζεται από PHP 3 >=3.0.4, PHP 4, PHP 5

Προσαρμοσμένη ταξινόμηση πίνακα κατά πλήκτρα.
array_reverse

Bool uksort (στοιχείο πίνακα, συνάρτηση cmp_function)

Η συνάρτηση uksort() ταξινομεί τον πίνακα arr κατά δείκτες, διατηρώντας συσχετίσεις ευρετηρίου, χρησιμοποιώντας τη συνάρτηση που ορίζεται από το χρήστη που καθορίζεται στο όρισμα cmp_function για τη σύγκριση δεικτών στοιχείων. Αυτή η συνάρτηση μεταβιβάζεται σε δύο δείκτες των στοιχείων για σύγκριση και θα πρέπει να επιστρέψει έναν θετικό ή αρνητικό αριθμό ή 0.

Η συνάρτηση uksort() επιστρέφει true εάν η ταξινόμηση ολοκληρωθεί με επιτυχία και FALSE διαφορετικά.
Αρκετά συχνά πρέπει να ταξινομήσουμε κάτι με πιο σύνθετα κριτήρια παρά μόνο αλφαβητικά. Για παράδειγμα, αφήστε το $Files να αποθηκεύσει μια λίστα με ονόματα αρχείων και υποκαταλόγους στον τρέχοντα κατάλογο. Μπορεί να θέλουμε να εξάγουμε αυτήν τη λίστα όχι μόνο με λεξογραφική σειρά, αλλά και να έχουν όλα τα αρχεία πριν από όλους τους καταλόγους. Σε αυτήν την περίπτωση, θα πρέπει να χρησιμοποιήσουμε τη συνάρτηση uksort(), έχοντας πρώτα γράψει μια συνάρτηση σύγκρισης με δύο παραμέτρους, όπως απαιτείται από την uksort().

1 παράδειγμα χρήσης της συνάρτησης uksort():

// Αυτή η συνάρτηση θα πρέπει να συγκρίνει τις τιμές των $f1 και $f2 και να επιστρέψει:
// -1 εάν $f1<$f2,
// 0 εάν $f1==$f2
// 1 εάν $f1>$f2
// Κάτω< и >κατανοούμε την ακολουθία αυτών των ονομάτων στη συνάρτηση λίστας εξόδου FCmp($f1,$f2)
( // Ο κατάλογος έρχεται πάντα πριν από το αρχείο
if(is_dir($f1) && !is_dir($f2)) επιστρέφει -1;
// Το αρχείο έρχεται πάντα μετά τον κατάλογο
if(!is_dir($f1) && is_dir($f2)) επιστρέφει 1;
// Διαφορετικά, συγκρίνετε λεξιγραφικά
αν ($f1<$f2) return -1; elseif($f1>$f2) επιστροφή 1; αλλιώς επιστροφή 0?
}
// Αφήστε τα $Files να περιέχουν έναν πίνακα με κλειδιά - ονόματα αρχείων
// στον τρέχοντα κατάλογο. Ας ταξινομήσουμε it.uksort($Files,"FCmp"); //πέρασμα της συνάρτησης ταξινόμησης "

array_multisort()

Ταξινόμηση πολλαπλών πινάκων ή πολυδιάστατων πινάκων (PHP 4, PHP 5)

Περιγραφή:

Bool array_multisort (πίνακας ar1 [, μικτό arg [, μικτή ... [, πίνακας ...]]])

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

Οι πίνακες εισόδου αντιμετωπίζονται ως στήλες ενός πίνακα που πρέπει να ταξινομηθεί κατά γραμμές - αυτή η προσέγγιση είναι παρόμοια με τη συμπεριφορά της έκφρασης SQL ORDER BY. Ο πρώτος πίνακας έχει προτεραιότητα στη διαδικασία ταξινόμησης.

Η δομή των ορισμάτων αυτής της συνάρτησης είναι λίγο ασυνήθιστη, αλλά βολική. Το πρώτο όρισμα πρέπει να είναι ένας πίνακας. Τα επόμενα ορίσματα μπορεί να είναι είτε πίνακες είτε τιμές που καθορίζουν τη σειρά ταξινόμησης, όπως φαίνεται στην παρακάτω λίστα.

Τιμές που καθορίζουν τη σειρά ταξινόμησης:

SORT_ASC - ταξινόμηση με αύξουσα σειρά
SORT_DESC - ταξινόμηση με φθίνουσα σειρά

Επισημάνσεις τύπου ταξινόμησης:

SORT_REGULAR - συγκρίνετε στοιχεία ως συνήθως
SORT_NUMERIC - συγκρίνετε στοιχεία σαν να ήταν αριθμοί
SORT_STRING - συγκρίνετε στοιχεία σαν να ήταν συμβολοσειρές

Είναι παράνομο να προσδιορίζονται δύο σημαίες ταξινόμησης του ίδιου τύπου μετά από κάθε πίνακα. Οι σημαίες ταξινόμησης που μεταβιβάζονται μετά το όρισμα ar1 ισχύουν μόνο για αυτό το όρισμα - προτού η συνάρτηση αρχίσει να επεξεργάζεται τον επόμενο πίνακα, αυτές οι σημαίες επιστρέφουν στις προεπιλεγμένες τιμές SORT_ASC και SORT_REGULAR.

Ταξινόμηση πολλαπλών πινάκων

$ar1 = πίνακας ("10", 100, 100, "a");
$ar2 = πίνακας(1, 3, "2", 1);
array_multisort($ar1, $ar2);

Στο παραπάνω παράδειγμα, αφού γίνει η ταξινόμηση, ο πρώτος πίνακας θα περιέχει 10, "a", 100, 100. Ο δεύτερος θα περιέχει 1, 1, "2", 3. Τα στοιχεία του δεύτερου πίνακα που αντιστοιχούν σε πανομοιότυπα στοιχεία του το πρώτο (100 και 100 ), θα ταξινομηθεί επίσης.

Ταξινόμηση ενός πολυδιάστατου πίνακα

$ar = array(array("10", 100, 100, "a"), array(1, 3, "2", 1));
array_multisort ($ar, SORT_ASC, SORT_STRING,
$ar, SORT_NUMERIC, SORT_DESC);

Στο παραπάνω παράδειγμα, μετά την ταξινόμηση, ο πρώτος πίνακας θα περιέχει 10, 100, 100, "a" (τα στοιχεία του έχουν ταξινομηθεί σε αύξουσα σειρά σαν να ήταν συμβολοσειρές) και ο δεύτερος πίνακας θα περιέχει 1, 3, "2" , 1 (τα στοιχεία ταξινομούνται ως αριθμοί, με φθίνουσα σειρά).

Ταξινομήστε έναν πίνακα κατά τιμές χρησιμοποιώντας μια προσαρμοσμένη συνάρτηση για σύγκριση στοιχείων (PHP 3 >= 3.0.3, PHP 4, PHP 5)

Περιγραφή:

Bool usort (πίνακας & πίνακας, συνάρτηση cmp_back)

Αυτή η συνάρτηση ταξινομεί τα στοιχεία ενός πίνακα χρησιμοποιώντας μια προσαρμοσμένη συνάρτηση για τη σύγκριση τιμών. Εάν χρειάζεται να ταξινομήσετε έναν πίνακα με ασυνήθιστα κριτήρια, θα πρέπει να χρησιμοποιήσετε αυτήν τη συνάρτηση.

Η συνάρτηση που χρησιμοποιείται για σύγκριση πρέπει να επιστρέψει έναν ακέραιο μικρότερο, ίσο ή μεγαλύτερο από μηδέν, εάν το πρώτο όρισμα είναι αντίστοιχα μικρότερο, ίσο ή μεγαλύτερο από το δεύτερο.

Σημείωση: Εάν δύο στοιχεία του αρχικού πίνακα είναι ίσα, η σειρά τους στον ταξινομημένο πίνακα είναι ακαθόριστη. Πριν από την PHP 4.0.6, οι συναρτήσεις που καθορίζονται από τον χρήστη διατηρούσαν τη σειρά τέτοιων στοιχείων στον αρχικό πίνακα, αλλά ο νέος αλγόριθμος ταξινόμησης που εισήχθη στην έκδοση 4.1.0 δεν χρησιμοποιεί πλέον αυτή τη λύση και δεν έχει άλλη αποτελεσματική.

Επιστρέφει TRUE σε επιτυχία ή FALSE σε σφάλμα.

Παράδειγμα Usort().

συνάρτηση cmp($a, $b)
{
αν ($a == $b) (
επιστροφή 0;
}
επιστροφή ($a)

$a = πίνακας(3, 2, 5, 6, 1);

usort($a, "cmp");

ενώ (list($key, $value) = κάθε($a)) (
echo "$key: $value
";
}
?>

0: 1
1: 2
2: 3
3: 5
4: 6

Σχόλιο: Προφανώς, η συνάρτηση sort() είναι πιο κατάλληλη για αυτήν την ασήμαντη περίπτωση.

Ένα παράδειγμα της συνάρτησης usort() που χρησιμοποιεί πολυδιάστατους πίνακες

συνάρτηση cmp($a, $b)
{
return strcmp($a["φρούτο"], $b["φρούτο"]);
}

$fruits["fruit"] = "λεμόνια";
$fruits["fruit"] = "μήλα";
$fruits["fruit"] = "σταφύλια";

usort($fruits, "cmp");

ενώ (list($key, $value) = κάθε($fruits)) (
echo "\$fruits[$key]: " . $value["φρούτο"] . "
";
}
?>

Κατά την ταξινόμηση ενός πολυδιάστατου πίνακα, οι μεταβλητές $a και $b περιέχουν αναφορές στους δύο πρώτους δείκτες του πίνακα.

Το αποτέλεσμα της εκτέλεσης αυτού του παραδείγματος:

$φρούτα: μήλα
$φρούτα: σταφύλια
$φρούτα: λεμόνια

Παράδειγμα χρήσης usort() με μέθοδο κλάσης

κλάση TestObj(
var $name;

συνάρτηση TestObj($name)
{
$this->name = $name;
}

/* Αυτή είναι η στατική συνάρτηση σύγκρισης: */
συνάρτηση cmp_obj($a, $b)
{
$al = strtolower($a->όνομα);
$bl = strtolower($b->όνομα);
αν ($al == $bl) (
επιστροφή 0;
}
επιστροφή ($al > $bl) ? +1: -1;
}
}

$a = νέο TestObj("c");
$a = νέο TestObj("b");
$a = νέο TestObj("d");

usort($a, array("TestObj", "cmp_obj"));

foreach ($a ως $item) (
echo $item->name . "
";
}
?>

Το αποτέλεσμα της εκτέλεσης αυτού του παραδείγματος:

σι
ντο
ρε

Ανακάτεμα στοιχείων πίνακα.
array_reverse

Τυχαία αναπαραγωγή κενού (στοιχείο πίνακα)

Η συνάρτηση shuffle() ανακατεύει τη λίστα που της έχει μεταβιβαστεί από την πρώτη παράμετρο arr, έτσι ώστε οι τιμές της να κατανέμονται τυχαία. Σε αυτήν την περίπτωση, ο ίδιος ο πίνακας αλλάζει και οι συσχετιστικοί πίνακες γίνονται αντιληπτοί ως λίστες.
Ένα παράδειγμα χρήσης της συνάρτησης shuffle():

$numbers = range(1, 20);
srand((float)microtime() * 1000000);
shuffle($numbers);
ενώ (list(, $number) = κάθε($numbers)) (
echo "$number ";
}

Σημείωση: Από την PHP 4.2.0, δεν είναι πλέον απαραίτητο να αρχικοποιήσετε τη γεννήτρια τυχαίων αριθμών με τις συναρτήσεις srand()
ή mt_srand(), αφού αυτό γίνεται πλέον αυτόματα.
Λειτουργία που υποστηρίζεται από PHP 3 >= 3.0.8, PHP 4, PHP 5

Ταξινόμηση του πίνακα σε αύξουσα σειρά.
array_reverse

Ταξινόμηση Bool (πίνακας arr [, int sort_flags])

Η συνάρτηση sort() έχει σχεδιαστεί για να ταξινομεί τους πίνακες με αύξουσα σειρά.
Σημείωση: Αυτή η συνάρτηση αλλάζει τα πλήκτρα των ταξινομημένων τιμών. Εκείνοι. οποιοσδήποτε συσχετικός πίνακας αντιμετωπίζεται ως λίστα από αυτήν τη συνάρτηση. Μετά την παραγγελία, η ακολουθία των πλήκτρων γίνεται 0,1,2,... και οι τιμές ανακατανέμονται ανάλογα με τις ανάγκες. Όπως μπορείτε να δείτε, οι συνδέσεις μεταξύ των παραμέτρων κλειδιού=>τιμής δεν αποθηκεύονται, επιπλέον, τα πλήκτρα απλώς εξαφανίζονται, επομένως δεν συνιστάται η ταξινόμηση οτιδήποτε άλλο εκτός από μια λίστα.
Παράδειγμα χρήσης της συνάρτησης sort():

sort($fruits);
επαναφορά ($fruits);

ηχώ «φρούτα[» . $κλειδί . "] = " . $val. "n";
}
?>

Αυτό το παράδειγμα θα παράγει:

Φρούτα = μήλα = μπανάνα = λεμονόφρουτα = πορτοκάλι


;
SORT_NUMERIC - συγκρίνει στοιχεία ως αριθμούς.
SORT_STRING - συγκρίνει στοιχεία ως συμβολοσειρές.

Ταξινόμηση του πίνακα σε φθίνουσα σειρά.
array_reverse

Bool rsort (πίνακας πίνακα [, int sort_flags])

Η συνάρτηση rsort() ταξινομεί τον πίνακα με φθίνουσα σειρά (από το υψηλότερο προς το χαμηλότερο).

Η συνάρτηση επιστρέφει TRUE εάν είναι επιτυχής, FALSE διαφορετικά.
Παράδειγμα χρήσης της συνάρτησης rsort():

rsort($φρούτα);
επαναφορά ($fruits);
ενώ (list($key, $val) = καθένα($fruits)) (
echo "$key = $valn";
}
?>

Αυτό το παράδειγμα θα παράγει:

0 = πορτοκαλί
1 = λεμόνι
2 = μπανάνα
3 = μήλο

Το όρισμα sort_flags καθορίζει τις ακόλουθες σημαίες ταξινόμησης:
SORT_REGULAR - συγκρίνει στοιχεία "ως έχουν"
Λειτουργία που υποστηρίζεται από PHP 3, PHP 4, PHP 5

Ταξινόμηση ενός συσχετιστικού πίνακα σε αύξουσα σειρά.
array_reverse

Bool asort (πίνακας arr [, int sort_flags])

Η συνάρτηση asort() ταξινομεί τον πίνακα που καθορίζεται στην παράμετρό του έτσι ώστε οι τιμές του να είναι κατά αλφαβητική (για συμβολοσειρές) ή αύξουσα (για αριθμούς). Σε αυτήν την περίπτωση, οι συνδέσεις μεταξύ των κλειδιών και των αντίστοιχων τιμών τους διατηρούνται, δηλ. Κάποια ζεύγη κλειδιών=>τιμών απλώς «επιπλέουν» προς τα πάνω και κάποια, αντίθετα, «πέφτουν κάτω».

Η συνάρτηση επιστρέφει true εάν είναι επιτυχής και false εάν παρουσιαστεί σφάλμα.
Παράδειγμα χρήσης της συνάρτησης asort():

"λεμόνι", "α" => "πορτοκάλι", "β" => "μπανάνα", "γ" => "μήλο");
ποικιλία ($φρούτα);
επαναφορά ($fruits);
ενώ (list($key, $val) = καθένα($fruits)) (
echo "$key = $valn";
}
?>

Το παράδειγμα θα δώσει τα εξής:

Γ = μήλο = μπανάνα = λεμόνι = πορτοκάλι

Ο πίνακας $fruits ταξινομήθηκε με αύξουσα συμβολική σειρά, ενώ οι δείκτες του πίνακα διατηρήθηκαν.



Λειτουργία που υποστηρίζεται από PHP 3, PHP 4, PHP 5

Ταξινόμηση ενός συσχετιστικού πίνακα με φθίνουσα σειρά.
array_reverse

Bool arsort(array arr [, int sort_flags])

Η συνάρτηση arsort() ταξινομεί τον πίνακα arr με φθίνουσα σειρά, διατηρώντας τους συσχετισμούς ευρετηρίου.
Αυτή η συνάρτηση χρησιμοποιείται κυρίως όταν η σειρά του στοιχείου στον πίνακα είναι σημαντική.
Η συνάρτηση επιστρέφει true εάν η ταξινόμηση ήταν επιτυχής και false εάν προέκυψε σφάλμα.
Παράδειγμα χρήσης της συνάρτησης arsort():

"λεμόνι", "a"=>"πορτοκάλι", "b"=>"μπανάνα", "γ"=>"μήλο");
arsort($arr);
επαναφορά ($arr);
while(list ($key, $val) = καθένα ($arr)) (
echo "$key = $vall";
}

Το παράδειγμα θα βγάζει:

Α = πορτοκαλί = λεμόνι = μπανάνα = μήλο

Ο πίνακας $arr ταξινομήθηκε με φθίνουσα σειρά χαρακτήρων, ενώ οι δείκτες του πίνακα διατηρήθηκαν.
Η μέθοδος ταξινόμησης μπορεί να αλλάξει χρησιμοποιώντας την προαιρετική παράμετρο sort_flags.
Αυτή η επιλογή μπορεί να καθορίσει πώς συγκρίνονται οι τιμές (ως συμβολοσειρές ή ως αριθμοί). Μπορεί να λάβει τις ακόλουθες προκαθορισμένες τιμές:
SORT_REGULAR - κανονική σύγκριση τιμών.
SORT_NUMERIC - σύγκριση ως αριθμοί.
SORT_STRING - συγκρίνετε ως συμβολοσειρές.
Αυτή η επιλογή εισήχθη στην έκδοση 4 της PHP.
Λειτουργία που υποστηρίζεται από PHP 3, PHP 4, PHP 5

Ταξινόμηση του πίνακα με αύξοντα πλήκτρα.
array_reverse

Bool ksort(πίνακας arr [, int sort_flags])

Η συνάρτηση ksort() ταξινομεί έναν πίνακα σε αύξουσα σειρά κλειδιών διατηρώντας τις σχέσεις κλειδιού-τιμής. Αυτή η συνάρτηση είναι ιδιαίτερα χρήσιμη κατά την ταξινόμηση συσχετιστικών πινάκων.
Η συνάρτηση θα επιστρέψει true αν όλα ήταν επιτυχή, false διαφορετικά.
Παράδειγμα χρήσης της συνάρτησης ksort():

"λεμόνι", "a"=>"πορτοκάλι", "b"=>"μπανάνα", "γ"=>"μήλο");
ksort($φρούτα);
επαναφορά ($fruits);
ενώ (list($key, $val) = καθένα($fruits)) (
echo "$key = $valn";
}
?>

Αυτό το παράδειγμα θα βγάζει:

Α = πορτοκάλι = μπανάνα = μήλο = λεμόνι

Το όρισμα sort_flags καθορίζει τις ακόλουθες σημαίες ταξινόμησης:
SORT_REGULAR - συγκρίνει στοιχεία "ως έχουν"
SORT_NUMERIC - συγκρίνει στοιχεία ως αριθμούς SORT_STRING - συγκρίνει στοιχεία ως συμβολοσειρές
Λειτουργία που υποστηρίζεται από PHP 3, PHP 4, PHP 5

Ταξινομήστε τον πίνακα κατά φθίνοντα δείκτη.
array_reverse

Bool krsort(array arr [, int sort_flags])

Η συνάρτηση krsort() ταξινομεί τα πλήκτρα στον πίνακα arr με αντίστροφη σειρά. Σε αυτήν την περίπτωση, η αλυσίδα κλειδιού-τιμής διατηρείται. Αυτή η συνάρτηση είναι χρήσιμη κατά την ταξινόμηση συσχετιστικών πινάκων.
Η συνάρτηση επιστρέφει true εάν είναι επιτυχής, false διαφορετικά.
Παράδειγμα χρήσης της συνάρτησης krsort():

"λεμόνι", "a"=>"πορτοκάλι", "b"=>"μπανάνα", "γ"=>"μήλο");
krsort($φρούτα);
επαναφορά ($fruits);
ενώ (list($key, $val) = καθένα($fruits)) (
echo "$key = $valn";
}
?>

Αυτό το παράδειγμα θα βγάζει:

Δ = λεμόνι = μήλο = μπανάνα = πορτοκάλι

Το όρισμα sort_flags καθορίζει τις ακόλουθες σημαίες ταξινόμησης:
SORT_REGULAR - συγκρίνει στοιχεία "ως έχουν"
SORT_NUMERIC - συγκρίνει στοιχεία ως αριθμούς SORT_STRING - συγκρίνει στοιχεία ως συμβολοσειρές
Λειτουργία που υποστηρίζεται από PHP 3 >= 3.0.13, PHP 4, PHP 5

Εκτελεί ένα "φυσικό" είδος πίνακα.
array_reverse

Void natsort (arar array)

Η συνάρτηση natsort() ταξινομεί τον πίνακα σε μια φυσική σειρά για τους ανθρώπους, διατηρώντας τους συσχετισμούς ευρετηρίου.
Ένα παράδειγμα χρήσης της συνάρτησης natsort():

sort($array1);
echo "Τυπική ταξινόμηση"?
print_r($array1);

natsort($array2);
echo "Φυσική ταξινόμηση"?
print_r($array2);
?>

Αυτό το παράδειγμα θα παράγει τα εξής:

Τυπικός πίνακας ταξινόμησης(
=> img1.png
=> img10.png
=> img12.png
=> img2.png
)

Φυσικός πίνακας ταξινόμησης(
=> img1.png
=> img2.png
=> img10.png
=> img12.png
)

Λειτουργία που υποστηρίζεται από PHP 4, PHP 5

Λόγω της ισχύος και της ευελιξίας τους, οι πίνακες έχουν γίνει ένα απαραίτητο χαρακτηριστικό της PHP. Επιπλέον, σε μια σειρά σύνθετων καταστάσεων, μπορούν να χρησιμοποιηθούν δισδιάστατοι πίνακες PHP. Αυτό το άρθρο αφορά την ταξινόμηση πολυδιάστατων πινάκων στην PHP.

Συστατικά:

  • Πολυδιάστατος πίνακας;
  • PHP ενσωματωμένες συναρτήσεις usort(), uasort() ή uksort();
  • Οι ενσωματωμένες λειτουργίες της PHP strcasecmp() ή strcmp() .

Εκτέλεση:
Ας πούμε ότι έχουμε έναν πίνακα:

$students = πίνακας (1 => πίνακας ("name" => "Jack", "grade" => 98.5), 2 => πίνακας ("name" => "Bill", "grade" => 90.1), 3 => πίνακας ("name" => "Chloe", "grade" => 94.0), 4 => πίνακας ("name" => "Taylor", "grade" => 95.1), 5 => πίνακας ("όνομα" " => "Larry", "grade" => 94.6));

Εδώ μπορείτε να ταξινομήσετε έναν δισδιάστατο πίνακα PHP με βάση την παράμετρο βαθμού ( βαθμός) (αριθμητική ταξινόμηση) ή όνομα ( Ονομα) (ταξινομήσετε αλφαβητικά).

Ο εξωτερικός πίνακας $students αποτελείται από πέντε στοιχεία, καθένα από τα οποία αναπαρίσταται επίσης ως ξεχωριστός πίνακας. Ο εσωτερικός πίνακας χρησιμοποιεί το αναγνωριστικό μαθητή ως κλειδί και αποθηκεύει δύο τιμές: το όνομα του μαθητή και τον βαθμό του.

Για να ταξινομήσουμε έναν πολυδιάστατο πίνακα, ορίζουμε τη δική μας συνάρτηση. Λέμε στην PHP ότι θα πρέπει να χρησιμοποιηθεί για την κλήση των ενσωματωμένων συναρτήσεων usort(), uasort() ή uksort().

Η συνάρτηση που ορίζετε πρέπει να έχει δύο παραμέτρους και να επιστρέφει μια τιμή που υποδεικνύει ποια παράμετρος είναι πρώτη στη λίστα. Μια αρνητική ή ψευδής τιμή υποδηλώνει ότι η πρώτη παράμετρος έχει καθοριστεί πριν από τη δεύτερη. Θετικό ή αληθινό - ότι η δεύτερη παράμετρος έρχεται πρώτη. Η τιμή μηδέν (0) υποδηλώνει ότι και οι δύο παράμετροι είναι ίσες.

A – Ταξινόμηση κατά βαθμό (παράμετρος βαθμού) (αριθμητική ταξινόμηση)

Ας ορίσουμε μια συνάρτηση για την ταξινόμηση του πίνακα κατά βαθμολογία (παράμετρος βαθμός):

// Συνάρτηση ταξινόμησης κατά βαθμολογία: ταξινόμηση με ΦΘΙΝΟΝΤΙΚΗ σειρά. συνάρτηση grade_sort($x, $y) (αν ($x["βαθμός "]< $y[" оценка "]) { return true; } else if ($x["оценка"] >$y["score"]) ( return false; ) else ( return 0; ) )

Στη συνέχεια, θα πάρουμε μια προσαρμοσμένη συνάρτηση και θα επαναλάβουμε μέσω ενός δισδιάστατου πίνακα PHP που βασίζεται στο πρώτο κλειδί. Μοιάζει κάπως έτσι:

// $students είναι ο πολυδιάστατος πίνακας μας και grade_sort είναι η δημιουργημένη συνάρτηση usort ($students, "grade_sort");

Παράδειγμα:

// Εκτυπώστε έναν πίνακα με τη μορφή (αρχικός πίνακας): echo "

Πίνακας στη μορφή

" . print_r($students, 1) ."
"; // Ταξινόμηση κατά βαθμό: uasort($students, "grade_sort"); echo "

Πίνακας ταξινομημένο κατά βαθμολογία

" . print_r($students, 1) ."
";

Η PHP θα στείλει εσωτερικούς πίνακες σε αυτή τη συνάρτηση για περαιτέρω ταξινόμηση. Εάν ενδιαφέρεστε για το πώς συμβαίνουν όλα αυτά λεπτομερώς, τότε εμφανίστε τα αποτελέσματα της σύγκρισης των τιμών μέσα στη συνάρτηση. Και αφού η PHP δημιουργήσει έναν δισδιάστατο πίνακα, αλλάξτε την ίδια τη συνάρτηση ως εξής:

συνάρτηση grade_sort($x, $y) ( στατικό $count = 1; echo "

Επανάληψη $count: ($x['score']) vs. ($y['score'])

n";< $y[‘ оценка ‘]) { return true; } else if ($x[‘ключ1′] >$count++;

αν ($x[' score ']

$y['key1']) ( return false; ) else ( return 0; ) )

Εμφανίζοντας τις τιμές $x['score'] και $y['score'] , μπορείτε να δείτε πώς καλείται η συνάρτηση ταξινόμησης που ορίζεται από το χρήστη.< $y["grade"]); }

Μπορείτε να συντομεύσετε τη συνάρτηση grade_sort ως εξής: // Συνάρτηση αριθμητικής ταξινόμησης κατά βαθμό: ταξινόμηση σε DESCENDING συνάρτηση grade_sort($x, $y) (επιστροφή ($x["βαθμός"]Αποτελέσματα

ταξινόμηση ενός δισδιάστατου πίνακα PHP σύμφωνα με την αξιολόγηση φαίνονται στην παρακάτω εικόνα:Σημείωση: Η συνάρτηση usort() ταξινομεί κατά τιμές, αλλά δεν αποθηκεύει τα κλειδιά (

για εξωτερική συστοιχία

Για να ταξινομήσετε τον πίνακα $students με βάση το πρώτο κλειδί, πρέπει να συγκρίνετε δύο συμβολοσειρές. Επομένως, στο παράδειγμα με ταξινόμηση με αλφαβητική σειρά, θα χρησιμοποιήσουμε τη συνάρτηση strcasecmp() ( χωρίς διάκριση πεζών-κεφαλαίων) και strcmp() ( διάκριση πεζών-κεφαλαίων). Το προκύπτον Δισδιάστατος πίνακας PHPθα μοιάζει με αυτό:

// Συνάρτηση για ταξινόμηση κατά όνομα: συνάρτηση name_sort($x, $y) (επιστρέφει strcasecmp($x["όνομα"], $y["όνομα"]);

Παράδειγμα:

// Εκτύπωση ενός πίνακα όπως (αρχικός πίνακας): echo "

Πίνακας στη μορφή

" . print_r($students, 1) ."
"; // Ταξινόμηση κατά όνομα: uasort($students, "name_sort"); echo "

Πίνακας ταξινομημένο κατά όνομα

" . print_r($students, 1) ."
";

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


Μετάφραση του άρθρου " Ταξινόμηση πολυδιάστατου πίνακα σε PHP«προετοιμάστηκε από τη φιλική ομάδα του έργου.

Και μιλήστε μαζί σας για διάφορα «καλούδια» που μπορεί να χρειαστείτε όταν οριστικοποιείτε έτοιμες λύσεις.

Και ένα από αυτά, που προσωπικά συναντώ αρκετά συχνά στη δουλειά, είναι ταξινόμηση πίνακαphp.

Τέτοιες συχνές συναντήσεις οφείλονταν στο γεγονός ότι, όπως δείχνει η πρακτική, στους ανθρώπους αρέσει κατά καιρούς, για μια αλλαγή, να αλλάζουν την ακολουθία εμφάνισης των αντικειμένων στον ιστότοπό τους - είτε πρόκειται για προϊόντα σε ένα ηλεκτρονικό κατάστημα, μηνύματα χρηστών σε ένα φόρουμ , ή μπλοκ πληροφοριών σε ιστότοπους επαγγελματικών καρτών.

Για αρχάριους, θα σας υπενθυμίσω μόνο τις κύριες διατάξεις στην πιο κατανοητή γλώσσα. Επομένως, εάν δεν θεωρείτε τον εαυτό σας ένα από αυτά, μπορείτε να προχωρήσετε αμέσως σε παραδείγματα προβλημάτων και τρόπους επίλυσής τους.

Μια μικρή θεωρία για τους πίνακες php

Η PHP είναι μια γλώσσα προγραμματισμού από την πλευρά του διακομιστή. Βασισμένο σε διακομιστή, επειδή τα σενάρια που εκκινούνται από τους χρήστες μέσω της διεπαφής Ιστού (πρόγραμμα περιήγησης Διαδικτύου) αποθηκεύονται και εκτελούνται στον διακομιστή.

Τα σενάρια PHP είναι κρυμμένα από την άποψη του μέσου χρήστη. Στο παράθυρο του προγράμματος περιήγησής σας, βλέπετε μόνο τα αποτελέσματα της εκτέλεσής τους.

Ένας πίνακας στον προγραμματισμό είναι μια συλλογή ορισμένων δεδομένων. Αποτελούνται από στοιχεία πίνακα, τα οποία είναι ζεύγη [δείκτης] => [τιμή].

Οι πίνακες μπορεί να είναι στατικοί, δυναμικοί, ετερογενείς κ.λπ. (μια ολόκληρη επιστήμη) 🙂 Για να δουλέψουμε μαζί τους, αρκεί η ταξινόμηση σε μονοδιάστατα και πολυδιάστατα.

Για να καταλάβετε τη διαφορά μεταξύ τους, αρκεί να δώσετε μια περιγραφή της δομής τους.

Μονοδιάστατος πίνακας php:

Πίνακας ( => 1 => 2 => 3)

Πολυδιάστατος πίνακας PHP:

Πίνακας ( => Πίνακας ( => 1) => Πίνακας ( => 2) => Πίνακας ( => 3))

Προσέξατε; Εάν όχι, δώστε προσοχή στα στοιχεία του πολυδιάστατου πίνακα php. Είναι οι ίδιοι συστοιχίες. Εκείνοι. Ένας πολυδιάστατος πίνακας είναι μια συλλογή πινάκων. Το επίπεδο της φωλιάς τους μπορεί να είναι όσο μεγάλο επιθυμείτε.

Τώρα νομίζω ότι είναι ξεκάθαρο :)

Θα ήθελα επίσης να επισημάνω ξεχωριστά την έννοια του συσχετιστικού πίνακα στην PHP. Στην πραγματική ζωή, δεν είναι τόσο κοινά όσο τα συνηθισμένα, αλλά εξακολουθούν να εμφανίζονται.

Εν ολίγοις, πρόκειται για πίνακες στους οποίους το κλειδί και η τιμή του στοιχείου του πίνακα είναι άρρηκτα συνδεδεμένα και υπάρχει μια ορισμένη λογική σύνδεση μεταξύ τους που δεν μπορεί να σπάσει σε καμία περίπτωση.

Ένα παράδειγμα συσχετιστικού πίνακα είναι η ακόλουθη κατασκευή:

Πίνακας ( => 12 [πλήρες όνομα] => Ιβάνοφ Ιβάν Ιβάνοβιτς [μέσος_βαθμός] => 3)

Όπως μπορείτε να δείτε, εδώ οι τιμές των κλειδιών και οι τιμές των στοιχείων του πίνακα συνδέονται στενά και σε καμία περίπτωση αυτή η σύνδεση δεν πρέπει να διακοπεί. Εξαιτίας αυτού, οι συσχετιστικοί πίνακες ονομάζονται συχνά "λεξικά" ή "κατάλογοι".

Επομένως, αυτή η δυνατότητα πρέπει να λαμβάνεται υπόψη κατά την ταξινόμηση ενός πίνακα PHP, επειδή Δεν είναι όλες οι μέθοδοι κατάλληλες για τέτοιες δομές.

Στην ίδια την PHP, οι πίνακες δημιουργούνται με δύο τρόπους:

  1. $books = πίνακας('ABC', 'Primer', 'Dictionary'); ή $books = πίνακας('azb' => 'ABC', 'buk' => 'Primer', 'slov' => 'Λεξικό'); Η δεύτερη επιλογή χρησιμοποιείται όταν το στοιχείο πρέπει να υποδεικνύει ρητά το πεδίο κλειδιού (σχετικό για συσχετιστικούς πίνακες). Εάν δεν το καθορίσετε, τα πλήκτρα στοιχείων πίνακα θα είναι αριθμοί από προεπιλογή. Ξεκινώντας από το 0 (μηδέν).
  2. $books = 'ABC'; $books = 'βιβλίο ABC'; $books = 'βιβλίο ABC';

Και στις δύο περιπτώσεις, τα $books θα είναι ένας πίνακας. Έτσι, αν συναντήσετε τέτοιες κατασκευές στον κώδικα του site σας, δεν θα είναι πλέον κάτι ακατανόητο για εσάς :)

Αν θέλετε να μάθετε για τους πίνακες PHP με περισσότερες λεπτομέρειες, προτείνω το παρακάτω βίντεο:

Να σας υπενθυμίσω ότι για να δείτε τη δομή του πίνακα στην οθόνη σας, αφού δηλώσετε τον πίνακα στον κώδικα του ιστότοπου, πρέπει να γράψετε την ακόλουθη κατασκευή:

Ηχώ"

"; print_r(array_variable); die();

Εάν η μεταβλητή που εκτυπώνετε είναι πίνακας, το κείμενο θα ξεκινά με την ακόλουθη γραμμή:

Παράταξη(...

Και λίγα ακόμη λόγια για το θέμα του άρθρου μας - ταξινομώντας πίνακεςphp.

Όπως καταλαβαίνετε, τα δεδομένα σε πίνακες είναι δομημένα και τα στοιχεία είναι διατεταγμένα σε μια συγκεκριμένη σειρά. Για να το αλλάξουμε, χρειαζόμαστε απλώς ταξινόμηση πίνακα PHP, η οποία υλοποιείται από έτοιμες συναρτήσεις γλώσσας.

Επομένως, το μόνο που χρειάζεται να κάνουμε είναι να καλέσουμε την απαιτούμενη συνάρτηση αφού δηλώσουμε τον πίνακα, προσδιορίζοντάς τον ως παράμετρο.

Ας προχωρήσουμε σε μια επισκόπηση των ίδιων των λειτουργιών.

συναρτήσεις ταξινόμησης πίνακα php

Η πλήρης λίστα τους παρουσιάζεται στην επίσημη τεκμηρίωση της γλώσσας php:

Για να ταξινομήσετε έναν πίνακα PHP χρησιμοποιώντας μια συγκεκριμένη συνάρτηση, θα χρειαστεί να τον καλέσετε αφού δηλώσετε τον πίνακα και τον γεμίσετε με τιμές, προσδιορίζοντας τον πίνακα μας ως παραμέτρους. Για παράδειγμα:

$cars = array("Toyota", "Mazda", "Mitsubishi"); sort($cars);

Ας εξετάσουμε εν συντομία τη λειτουργικότητα καθενός από αυτά. Οι συναρτήσεις θα καθοριστούν στη μορφή με την οποία θα πρέπει να κληθούν στον κώδικα, δηλ. "name(parameter1, parameter2, ...);".

Μην ξεχάσετε να βάλετε ";" αφού καλέσετε τη συνάρτηση, γιατί χωρίς αυτό, ένα ωραίο μήνυμα σφάλματος θα εμφανιστεί στην οθόνη :)

Ως ενδεικτικό παράδειγμα, ας πάρουμε έναν απλό μονοδιάστατο πίνακα στον οποίο τόσο τα πλήκτρα όσο και οι τιμές θα είναι μη ταξινομημένα, έτσι ώστε τα αποτελέσματα της εκτέλεσης των συναρτήσεων να είναι πιο οπτικά και κατανοητά.

Πίνακας ( => 11 => 18 => 9)

Λοιπόν, πώς μπορείτε να ταξινομήσετε έναν πίνακα με την επιθυμητή σειρά στην PHP;

Λειτουργίες για απλή ταξινόμηση πίνακα php κατά τιμή

Εάν προτιμάτε να παρακολουθείτε υλικό βίντεο από την ανάγνωση, τότε θα ήθελα να σας προτείνω να παρακολουθήσετε αυτό το βίντεο, το οποίο δείχνει ξεκάθαρα και ξεκάθαρα τη λειτουργία των λειτουργιών ταξινόμησης πίνακα PHP από αυτό το μπλοκ:

Εάν μετά από αυτό εξακολουθείτε να έχετε ερωτήσεις, μπορείτε να βρείτε πιο λεπτομερείς πληροφορίες για κάθε λειτουργία παρακάτω.

sort($array, $flag);- μία από τις πιο απλές και δημοφιλείς λειτουργίες. Σας επιτρέπει να ταξινομήσετε έναν πίνακα σε αύξουσα σειρά σε php, λαμβάνοντας υπόψη τις τιμές των στοιχείων, π.χ. θα διατάσσονται από τις μικρότερες έως τις μεγαλύτερες τιμές. Παίρνει μια μεταβλητή πίνακα και μια από τις σημαίες ταξινόμησης ως παραμέτρους, που σας επιτρέπει να αλλάξετε τη συμπεριφορά ταξινόμησης.

Λίστα σημαιών:

  • SORT_REGULAR – τα στοιχεία συγκρίνονται χωρίς να αλλάζουν οι τύποι
  • SORT_NUMERIC – τα στοιχεία συγκρίνονται ως αριθμοί
  • SORT_STRING – τα στοιχεία συγκρίνονται ως συμβολοσειρές
  • SORT_LOCALE_STRING – σύγκριση συμβολοσειρών, αλλά λαμβάνοντας υπόψη την τρέχουσα τοπική ρύθμιση.
  • SORT_NATURAL – σύγκριση συμβολοσειρών στοιχείων, λαμβάνοντας υπόψη τη φυσική τους σειρά (όπως το natsort)
  • SORT_FLAG_CASE – ταξινόμηση στοιχείων πίνακα php χωρίς διάκριση πεζών-κεφαλαίων (μπορεί να συνδυαστεί με SORT_STRING ή SORT_NATURAL bitwise OR).

Όμως, στις περισσότερες περιπτώσεις, το αποτέλεσμα της εκτέλεσης της συνάρτησης είναι σωστό ακόμη και χωρίς αυτές τις διευκρινιστικές σημαίες. Από προεπιλογή (αν δεν έχει καθοριστεί τίποτα) θα χρησιμοποιηθεί το SORT_REGULAR.

Ο δοκιμαστικός πίνακας μας μετά την κλήση της συνάρτησης sort() θα μοιάζει με αυτό:

Πίνακας ( => 9 => 11 => 18)

Όπως μπορείτε να δείτε, μετά την ταξινόμηση του πίνακα κατά τιμές, άλλαξαν και οι τιμές των κλειδιών τους, επειδή Η ταξινόμηση λειτουργεί χωρίς να διατηρεί τη σχέση κλειδιού-τιμής, όπως αναφέρεται στην επίσημη τεκμηρίωση της php.

Ως αποτέλεσμα, αυτή η επιλογή είναι κατάλληλη για τη συντριπτική πλειοψηφία των περιπτώσεων.

rsort($array, $flag);— μια συνάρτηση που είναι ο ανταγωνιστής του είδους. Ανταγωνιστής, γιατί ταξινομεί τον πίνακα με τον ίδιο τρόπο, μόνο όχι σε αύξουσα σειρά, αλλά σε φθίνουσα σειρά, δηλ. Τα στοιχεία του πίνακα php με τις μεγαλύτερες τιμές θα πάνε πρώτα.

Μπορείτε επίσης να του περάσετε δύο παραμέτρους: τον ίδιο τον πίνακα και τη σημαία ταξινόμησης και, όπως και η ταξινόμηση, είναι πιο κατάλληλο για μονοδιάστατους πίνακες. Ο δοκιμαστικός πίνακας μας μετά την κλήση αυτής της συνάρτησης θα λάβει την ακόλουθη μορφή:

Πίνακας ( => 18 => 11 => 9)

asort($array, $flag);είναι μια συνάρτηση PHP για την ταξινόμηση ενός πίνακα κατά τιμή, ο μηχανισμός της οποίας είναι επίσης πολύ παρόμοιος με την ταξινόμηση.

Η μόνη εξαίρεση είναι ότι σας επιτρέπει να ταξινομήσετε έναν πίνακα php με βάση την τιμή των στοιχείων του, διατηρώντας παράλληλα τη σχέση κλειδιού-τιμής.

Επομένως, αυτή η δυνατότητα είναι ιδανική για ταξινόμηση συσχετιστικών πινάκων php, δηλ. δομές όπου αυτή η σύνδεση είναι λογική και σημαντική.

Τα στοιχεία θα ταξινομηθούν με αύξουσα σειρά, επειδή... Σας επιτρέπει να ταξινομήσετε έναν συσχετιστικό πίνακα PHP κατά τιμή, διατηρώντας τα κλειδιά.

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

Πίνακας ( => 9 => 11 => 18)

Όπως μπορείτε να δείτε, η διαφορά από την ταξινόμηση είναι μόνο στην αποθήκευση των κλειδιών των τιμών με τις οποίες ταξινομείται ο πίνακας php. Αυτό ονομάζεται διατήρηση της σχέσης κλειδιού-τιμής, η οποία είναι απίστευτα σημαντική κατά την ταξινόμηση συσχετιστικών πινάκων PHP.

arsort($array, $flag);- μια άλλη συνάρτηση php για την ταξινόμηση ενός πίνακα κατά τιμή. Ανταγωνιστικός τύπος.

Λειτουργεί με την ίδια αρχή με την αναφερόμενη συνάρτηση, μόνο ο πίνακας php θα ταξινομηθεί με φθίνουσα σειρά σε αυτήν την περίπτωση. Επίσης μια εξαιρετική επιλογή κατά την ταξινόμηση συσχετιστικών πινάκων PHP.

Αφού καλέσουμε αυτήν τη συνάρτηση, το παράδειγμά μας θα μοιάζει με αυτό:

Πίνακας ( => 18 => 11 => 9)

Προηγμένες λειτουργίες ταξινόμησης πίνακα php κατά τιμή

Αυτό το μπλοκ συναρτήσεων, σε αντίθεση με τα προηγούμενα, που σας επέτρεπαν να αλλάξετε τη σειρά σε φθίνουσα/αύξουσα σειρά, θα σας επιτρέψει να προσθέσετε ποικιλία και να τακτοποιήσετε στοιχεία σε διαφορετικές ακολουθίες εκτός από τις «παραδοσιακές».

Αυτό το χαρακτηριστικό τα καθιστά κατάλληλα για την επίλυση διαφόρων μη τυπικών προβλημάτων, μερικές φορές πολύ ενδιαφέροντα :)

natsort($array);— αυτή η συνάρτηση προσθέτει ποικιλία στην οικογένεια λύσεων που μοιάζουν με ταξινόμηση, επειδή ο μηχανισμός λειτουργίας του είναι θεμελιωδώς διαφορετικός από αυτούς. Το natsort έχει μόνο μία παράμετρο εισόδου - αυτός είναι ένας πίνακας με δυνατότητα ταξινόμησης, οι τιμές του οποίου θα ταξινομηθούν με τη σειρά που είναι γνωστή στους ανθρώπους. Αυτός ο αλγόριθμος ονομάζεται "φυσική τάξη", που στα ρωσικά σημαίνει "φυσική τάξη". Για να γίνει σαφές το νόημα αυτής της δήλωσης, θα πάρουμε έναν άλλο πίνακα ως παράδειγμα:

Πίνακας ( => student5 => student1 => student10)

Επιπλέον, η συνάρτηση natsort διατηρεί τη σχέση κλειδιού-τιμής. Ως εκ τούτου, θα συγκρίνουμε τη δουλειά της με το asort, το οποίο είναι όσο το δυνατόν πιο παρόμοιο με αυτό. Αφού καλέσουμε το τελευταίο, ο πίνακας μας θα πάρει την ακόλουθη μορφή:

Πίνακας ( => student1 => student10 => student5)

Εάν καλέσετε το natsort, ο πίνακας που προκύπτει θα είναι αυτός:

Πίνακας ( => student1 => student5 => student10)

Νομίζω ότι μπορείτε τώρα να δείτε τη διαφορά και η αρχή λειτουργίας του natsort θα είναι ξεκάθαρη σε εσάς :-)

shuffle($array);είναι μια υπέροχη και πολύ χρήσιμη συνάρτηση με την οποία μπορείτε να ανακατέψετε έναν πίνακα PHP και να τοποθετήσετε τα στοιχεία του σε τυχαία σειρά.

Είναι πολύ βολικό όταν πρέπει να τακτοποιήσετε τα προϊόντα ενός ηλεκτρονικού καταστήματος σε μια κατηγορία ή σε άλλη σελίδα με τυχαία σειρά ή όταν πηγαίνετε σε έναν ιστότοπο επαγγελματικών καρτών, να εμφανίζετε στους χρήστες διαφορετικά μπλοκ πληροφοριών κάθε φορά με διαφορετική σειρά.

Σε αυτήν την περίπτωση, η σχέση κλειδιού-τιμής δεν διατηρείται. Δηλαδή, ο πίνακας που χρησιμοποιήσαμε στο προηγούμενο παράδειγμα, για μένα προσωπικά, πήρε τη μορφή:

Πίνακας ( => student10 => student5 => student1)

Επιπλέον, μετά από κάθε κλήση συνάρτησης η σειρά των στοιχείων θα είναι διαφορετική.

Οι λειτουργίες που συζητήσαμε νωρίτερα είναι αρκετά απλές και ο μηχανισμός λειτουργίας τους είναι ξεκάθαρος. Ένας πίνακας μεταβιβάζεται ως παράμετρος, τα περιεχόμενα του οποίου πρέπει να ταξινομηθούν με βάση τις τιμές των στοιχείων του, καθώς και μια σημαία που μπορεί να αλλάξει τη συμπεριφορά ταξινόμησης (μπορείτε εύκολα να το κάνετε χωρίς αυτό).

Είναι αρκετά δημοφιλές μεταξύ των προγραμματιστών επειδή... σας επιτρέπει να λύσετε οποιοδήποτε πρόβλημα σχετίζεται με την ταξινόμηση (χρησιμοποιώντας μια ποικιλία αλγορίθμων) χρησιμοποιώντας τη λειτουργία του.

Ένα από αυτά τα καθήκοντα είναι phpαπό το απαιτούμενο πεδίο.

Για να σας δείξουμε ξεκάθαρα πώς λειτουργούν οι ακόλουθες συναρτήσεις, ας πάρουμε ως παράδειγμα τον ακόλουθο πίνακα:

Πίνακας ( => Πίνακας ( => 32) => Πίνακας ( => 11) => Πίνακας ( => 27))

Όπως μπορείτε να δείτε, είναι πολυδιάστατο, γιατί... Τα στοιχεία του είναι πίνακες, η δομή των οποίων είναι πανομοιότυπη: έχουν όλα ένα πεδίο με το κλειδί «id». Και τώρα το καθήκον μας είναι να ταξινομήσουμε αυτά τα στοιχεία σε αύξουσα σειρά, δηλ. έτσι ώστε τα στοιχεία στον κύριο πίνακα να είναι διατεταγμένα σύμφωνα με τις τιμές των πεδίων στους υποπίνακες.

Πρέπει να πω, ένα αρκετά κοινό καθήκον. Οι παρακάτω λειτουργίες θα μας βοηθήσουν να το λύσουμε:

usort($array, 'function');— Λειτουργία PHP για ταξινόμηση ενός πολυδιάστατου πίνακα κατά το επιθυμητό πεδίο.

Σας επιτρέπει να ταξινομήσετε τα στοιχεία ενός πίνακα php χωρίς να διατηρείτε τη σχέση κλειδιού-τιμής σύμφωνα με μια συνάρτηση που ορίζεται από το χρήστη, το όνομα της οποίας μεταβιβάζεται ως δεύτερη παράμετρος κατά την κλήση του usort.

Η ίδια η λειτουργία περιγράφεται ξεχωριστά. Όσον αφορά το παράδειγμά μας, για να ταξινομήσουμε τα στοιχεία ενός πολυδιάστατου πίνακα php κατά το πεδίο ['id'] σε αύξουσα σειρά, η συνάρτηση χρήστη θα μοιάζει με αυτό:

Συνάρτηση myCmp($a, $b) ( if ($a["id"] == $b["id"]) return 0; return $a["id"] > $b["id"] ? 1 : -1;

Το μόνο που χρειάζεται τώρα να κάνουμε για να ξεκινήσουμε την ταξινόμηση είναι να καλέσουμε το usort($array, 'myCmp'); στην απαιτούμενη θέση στον κωδικό. Η πρώτη παράμετρος καθορίζει το όνομα της μεταβλητής του πίνακα.

Ως αποτέλεσμα, παίρνουμε τα εξής:

Πίνακας ( => Πίνακας ( => 11) => Πίνακας ( => 27) => Πίνακας ( => 32))

uasort($array, 'function');— μια άλλη συνάρτηση PHP για την ταξινόμηση ενός πολυδιάστατου πίνακα κατά το επιθυμητό πεδίο.

Λειτουργεί παρόμοια με το usort, αλλά διατηρεί τη σχέση κλειδιού-τιμής, καθιστώντας αυτή τη λειτουργία κατάλληλη για ταξινόμηση πολυδιάστατων συσχετιστικών πινάκων.

Η προσαρμοσμένη λειτουργία για το παράδειγμά μας θα είναι η ίδια. Τα αποτελέσματα της εκτέλεσής του θα μοιάζουν με αυτό:

Πίνακας ( => Πίνακας ( => 11) => Πίνακας ( => 27) => Πίνακας ( => 32))

Για να αλλάξετε τη σειρά ταξινόμησης των στοιχείων και να κάνετε μερικούς πρόσθετους μετασχηματισμούς δεδομένων, θα χρειαστεί να επεξεργαστείτε τη συνάρτηση χρήστη, όπως ίσως έχετε μαντέψει μόνοι σας :)

Για παράδειγμα, εάν οι πίνακες σας, που είναι στοιχεία του αρχικού, περιέχουν ένα πεδίο ['name'] με τιμή συμβολοσειράς, τότε μια προσαρμοσμένη συνάρτηση για την ταξινόμηση ενός πολυδιάστατου πίνακα php κατά αυτό το πεδίο σε αύξουσα σειρά θα μοιάζει με αυτό:

Συνάρτηση myCmp($a, $b) ( if (strcasecmp($a["name"], $b["person"]["name"]) == 0) return 0; return strcasecmp($a["name "], $b["όνομα"]) > 0 ? 1: -1; )

Η ταξινόμηση πινάκων PHP με χρήση προσαρμοσμένων συναρτήσεων δεν είναι η πιο εύκολη επιλογή, αλλά είναι πολύ ευέλικτη στην προσαρμογή και αν την κατακτήσετε, θα γίνει η αγαπημένη σας λύση.

array_multisort($array1, $array2, $flag);— για το τέλος έσωσα την πιο τρομερή και ασαφή συνάρτηση PHP για την ταξινόμηση ενός πίνακα. Ως παράμετροι εισόδου, χρειάζονται δύο πίνακες και οι ίδιες σημαίες ταξινόμησης που μπορούν να καθοριστούν σε συναρτήσεις που μοιάζουν με ταξινόμηση. Το array_multisort λειτουργεί ως εξής: η πρώτη παράμετρος είναι ο πίνακας που πρόκειται να ταξινομηθεί, ο δεύτερος πίνακας καθορίζει τη σειρά ταξινόμησης του πρώτου, μετά τον οποίο ο δεύτερος πίνακας ταξινομείται με τον ίδιο τρόπο όπως ο πρώτος. Αντί για έναν πίνακα που αντιπροσωπεύει τη σειρά ταξινόμησης, μπορείτε να χρησιμοποιήσετε τις σταθερές SORT_DESC για να ταξινομήσετε τον πίνακα με φθίνουσα σειρά και SORT_ASC σε αύξουσα σειρά. Σε όλη αυτή τη σύγχυση, μπορείτε επίσης να προσθέσετε σημαίες ταξινόμησης, οι οποίες μπορεί να προέρχονται μετά από όλους τους πίνακες.

$books = πίνακας(32, 11, 27); $sort_array = πίνακας (1, 2, 3); array_multisort($books, $sort_array);

Σε αυτό το παράδειγμα, ταξινόμησα έναν απλό μονοδιάστατο πίνακα $books σύμφωνα με τον πίνακα $sort_array. Ως αποτέλεσμα, ο πρώτος πίνακας πήρε την ακόλουθη μορφή:

Πίνακας ( => 11 => 27 => 32)

Και το δεύτερο έγινε έτσι:

Πίνακας ( => 2 => 3 => 1)

Δηλαδή ταξινομήθηκε σύμφωνα με το πρώτο. Αυτός είναι μαϊντανός :)

Το Array_multisort περιγράφεται με περισσότερες λεπτομέρειες στο παρακάτω βίντεο. Επίσης εκεί θα βρείτε επιπλέον παραδείγματα χρήσης του:

Χρησιμοποιώντας αυτή τη συνάρτηση, μπορείτε επίσης να ταξινομήσετε πολυδιάστατους πίνακες:

$books = array(array(32), array(11), array(27)); $sort_array = πίνακας (1, 2, 3); array_multisort($books, $sort_array);

Ο πίνακας $books θα μοιάζει με αυτό:

Πίνακας ( => Πίνακας ( => 11) => Πίνακας ( => 27) => Πίνακας ( => 32))

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

Αυτό είναι ένα είδος «χιονόμπαλας» στην PHP.

Κατά την ταξινόμηση ενός πίνακα PHP χρησιμοποιώντας αυτή τη συνάρτηση, η σχέση κλειδιού-τιμής διατηρείται για συσχετιστικούς πίνακες, αλλά όχι για αριθμητικούς πίνακες.

Οι προγραμματιστές που έχουν δοκιμάσει τη λειτουργία διαφόρων συναρτήσεων σημειώνουν ότι κατά την ταξινόμηση ενός πολυδιάστατου πίνακα, το php array_multisort εμφανίζει καλύτερα αποτελέσματα από το usort.

Αλλά το array_multisort δεν θα είναι σε θέση να αντιμετωπίσει όλες τις εργασίες που μπορεί να κάνει το usort. Για παράδειγμα, το ίδιο ταξινόμηση ενός πολυδιάστατου πίνακαphp ανά υποχρεωτικό πεδίο. Επομένως, σε κάθε μεμονωμένη περίπτωση πρέπει να αναλύσετε τις πιθανότητες επιτυχίας σας όταν χρησιμοποιείτε ένα ή άλλο σχέδιο.

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

Επομένως, προσπαθώ να μην το χρησιμοποιώ εκτός αν είναι απολύτως απαραίτητο, δίνοντας προτίμηση στη χρήση και απλούστερες λειτουργίες, κάτι που σας ενθαρρύνω να κάνετε και εσάς :)

Οι συναρτήσεις που συζητήσαμε νωρίτερα σας επιτρέπουν να ταξινομήσετε πίνακες στην PHP με βάση την τιμή των στοιχείων. Ας μιλήσουμε για το πώς μπορείτε να εκτελέσετε μια παρόμοια ενέργεια σε πλήκτρα στοιχείων.

Η PHP λειτουργεί για την ταξινόμηση ενός πίνακα κατά πλήκτρο

Πριν προχωρήσουμε σε μια επισκόπηση των λειτουργιών αυτής της ομάδας, θα ήθελα να πω ότι όλες έχουν ένα κοινό χαρακτηριστικό - όλες διατηρούν τη σχέση κλειδιού-τιμής. Και, αυστηρά, δεν θα μπορούσε να είναι διαφορετικά, γιατί... τότε δεν θα είχαν νόημα :)

Αυτή είναι η ιδιαιτερότητα. Ας δούμε κάθε λειτουργία με περισσότερες λεπτομέρειες.

ksort($array, $flag);— η συνάρτηση είναι ανάλογη με την κατάταξη, μόνο τα στοιχεία του πίνακα θα ταξινομηθούν όχι με τιμές, αλλά με πλήκτρα.

Αυτό το σχέδιο έχει δύο παραμέτρους εισαγωγής: τον πίνακα PHP που πρόκειται να ταξινομηθεί και ένα από τα σημαίες ταξινόμησης, μια πλήρη λίστα των οποίων μπορείτε να βρείτε στην περιγραφή της συνάρτησης ταξινόμησης (η χρήση της είναι προαιρετική). Αυτή η συνάρτηση php σας επιτρέπει να ταξινομήσετε έναν πίνακα σε αύξουσα σειρά.

Για να δείξουμε πώς λειτουργεί, ας επιστρέψουμε στο παράδειγμα που περιγράφεται στην αρχή του άρθρου:

Πίνακας ( => 11 => 18 => 9)

Εάν το ταξινομήσετε χρησιμοποιώντας ksort, το αποτέλεσμα θα μοιάζει με αυτό:

Πίνακας ( => 18 => 9 => 11)

Νομίζω ότι όλα είναι απλά και ξεκάθαρα.

krsort($array, $flag);- μια άλλη συνάρτηση PHP για ταξινόμηση πίνακα κατά πλήκτρο, πολύ παρόμοια με την προηγούμενη.

Η μόνη διαφορά είναι ότι ταξινομεί τον πίνακα php με φθίνουσα σειρά. Δηλαδή, είναι ανταγωνιστής του ksort, όπως το rsort είναι το sort.

Έχει επίσης δύο παραμέτρους εισόδου: τον πίνακα που πρόκειται να ταξινομηθεί και ένα από τα πλήκτρα. Αφού το εκτελέσουμε, το παράδειγμά μας θα μοιάζει με αυτό:

Πίνακας ( => 11 => 9 => 18)

Νομίζω ότι τα σχόλια είναι περιττά :)

ukrsort($array, 'function');- ένα ανάλογο της συνάρτησης PHP που αναφέρθηκε προηγουμένως για την ταξινόμηση ενός πίνακα κατά κλειδί - usort.

Λειτουργεί με την ίδια αρχή: διατηρεί τη σχέση κλειδιού-τιμής και ο πίνακας PHP ταξινομείται σύμφωνα με τη συνάρτηση που ορίζει ο χρήστης, το όνομα της οποίας μεταβιβάζεται ως δεύτερη παράμετρος. Η πρώτη παράμετρος παραμένει αμετάβλητη - αυτός είναι ο πίνακας που πρέπει να ταξινομηθεί.

Η διαφορά από το usort είναι ότι η ταξινόμηση πραγματοποιείται με βάση τα πλήκτρα στοιχείων.

Για να δείξετε πώς λειτουργεί αυτή η λειτουργία, χρησιμοποιήστε το ακόλουθο παράδειγμα:

Πίνακας ( => 40 => 0 => 10)

Για παράδειγμα, πρέπει να ταξινομήσουμε έναν πίνακα php κατά κλειδί σε αύξουσα σειρά. Σε αυτήν την περίπτωση, η συνάρτηση χρήστη θα μοιάζει με αυτό:

Συνάρτηση myCmp($a, $b) (αν ($a == $b) επιστρέφει 0; επιστροφή $a< $b ? 1: -1; }

Ως αποτέλεσμα, ο πίνακας μας θα έχει την ακόλουθη μορφή:

Πίνακας ( => 0 => 10 => 40)

Ένα σαφές πλεονέκτημα της χρήσης αυτής της συνάρτησης είναι ότι μπορεί να χρησιμοποιηθεί για την ταξινόμηση ενός πίνακα PHP σύμφωνα με ορισμένα ασυνήθιστα κριτήρια ή αλγόριθμο.

Επιτρέψτε μου να σας υπενθυμίσω ότι πρέπει να το χρησιμοποιήσετε μόνο όταν τα πλήκτρα των στοιχείων του πίνακα φέρουν κάποιο είδος σημασιολογικής σημασίας. Διαφορετικά, είναι καλύτερο να χρησιμοποιήσετε usort ή άλλες απλούστερες λειτουργίες.

Το άρθρο μας έφτασε στο τέλος του (like αν έχετε διαβάσει μέχρι εδώ) :)

Σε αυτό, προσπάθησα να περιγράψω ως απλά και ταυτόχρονα ξεκάθαρα και πλήρως όλους τους πιθανούς τρόπους ταξινόμησης διαφορετικών τύπων πινάκων στην PHP, υποστηρίζοντας τα λόγια μου με παραδείγματα.

Ομολογώ ότι η δημοσίευση ήταν αρκετά ογκώδης και δύσκολο να διαβαστεί κάποτε. Αλλά κάθε φορά που χρειάζεστε Ταξινόμηση πίνακα php, μπορείτε πάντα να ανατρέξετε σε αυτό το άρθρο για μια περιγραφή της λειτουργίας που χρειάζεστε και να δείτε παραδείγματα χρήσης της.

Ελπίζω ότι οι πληροφορίες ήταν χρήσιμες για εσάς :)

Εγγραφείτε στις ενημερώσεις του έργου και

Η ταξινόμηση είναι μια από τις πιο σημαντικές διαδικασίες κατά την εργασία με πίνακες. Για να κατανοήσουμε τη σημασία του, αρκεί να θυμόμαστε ενέργειες όπως, για παράδειγμα, η ταξινόμηση ταινιών με αλφαβητική σειρά ή η ταξινόμηση τυχόν τιμών σε αύξουσα ή φθίνουσα σειρά κ.λπ. Συμφωνώ, πολύ συνηθισμένες ενέργειες για διάφορες εφαρμογές! Σήμερα θα μιλήσουμε για τον τρόπο ταξινόμησης στοιχείων πίνακα σύμφωνα με καθορισμένες συνθήκες.

Έτσι, η ταξινόμηση διευκολύνει την εργασία με πίνακες. Όταν τα στοιχεία ταξινομούνται, είναι πιο εύκολο να τα βρείτε και να εκτελέσετε τις απαραίτητες ενέργειες με αυτά, για παράδειγμα, αυτές για τις οποίες έγραψα ακριβώς παραπάνω. Όλα εξαρτώνται από την εργασία που αντιμετωπίζετε.

Οι εργασίες μπορεί να είναι διαφορετικές, αλλά τα εργαλεία που θα χρησιμοποιήσουμε θα παραμείνουν στάνταρ. Αυτά τα εργαλεία είναι ειδικές λειτουργίες που χρησιμοποιούνται για την ταξινόμηση στοιχείων πίνακα.

Υπάρχουν αρκετές από αυτές τις συναρτήσεις στην PHP και ποια θα χρησιμοποιηθεί πάλι θα εξαρτηθεί από τη συγκεκριμένη εργασία, καθώς και από το αν ο πίνακας σας είναι συσχετικός πίνακας ή πίνακας λίστας.

Ας δούμε αυτές τις συναρτήσεις χρησιμοποιώντας παραδείγματα και ας δούμε πώς λειτουργούν.

Ταξινομήστε τις λίστες πινάκων με αλφαβητική και αντίστροφη σειρά

Αρχικά, ας εξοικειωθούμε με μια αρκετά απλή και κατανοητή λειτουργία είδος().

Θα μας επιτρέψει να ταξινομήσουμε τα στοιχεία του πίνακα σε αύξουσα σειρά ή, εάν αυτά τα στοιχεία είναι συμβολοσειρές, με αλφαβητική σειρά.

Η εφαρμογή του είναι αρκετά απλή. Για να δοκιμάσουμε αυτή τη συνάρτηση, χρειάζεται απλώς να δηλώσουμε έναν πίνακα και, στη συνέχεια, να χρησιμοποιήσουμε τη συνάρτηση για να ταξινομήσουμε τα στοιχεία του και να εμφανίσουμε το αποτέλεσμα στην οθόνη για να δούμε τι συμβαίνει.

$Mass = πίνακας("Katya", "Anya", "Lena", "Andrey"); sort($Mass); print_r($Mass); ?>

Και το αποτέλεσμα θα είναι το εξής. Όπως μπορείτε να δείτε στο στιγμιότυπο οθόνης στα δεξιά, τα στοιχεία ταξινομούνται με αλφαβητική σειρά. Αν αντί για στοιχεία συμβολοσειράς έχουμε αριθμούς, τότε αυτή η συνάρτηση θα ταξινομήσει και τους αριθμούς σε αύξουσα σειρά. Μπορείτε να το ελέγξετε μόνοι σας.

Υπάρχει επίσης μια συνάρτηση που κάνει το αντίθετο, δηλαδή ταξινομεί τα στοιχεία του πίνακα με φθίνουσα σειρά ή με αντίστροφη αλφαβητική σειρά.

Αυτή η συνάρτηση καλείται rsort(). Λειτουργεί ως εξής:

$Mass = πίνακας("Katya", "Anya", "Lena", "Andrey"); rsort($Mass); print_r($Mass); ?>

Όπως καταλαβαίνετε, τώρα το αποτέλεσμα είναι εντελώς αντίθετο. Τα στοιχεία του πίνακα ταξινομούνται με φθίνουσα σειρά, που σε αυτή την περίπτωση σημαίνει με αντίστροφη αλφαβητική σειρά.

Νομίζω ότι με αυτές τις λειτουργίες όλα είναι πολύ ξεκάθαρα. Δοκιμάστε τα με τους πίνακες σας και δεν θα έχετε ερωτήσεις.

Ταξινόμηση συσχετιστικών πινάκων

Όλα είναι υπέροχα, ωστόσο, με τους συσχετιστικούς πίνακες δεν θα μπορούμε πλέον να χρησιμοποιούμε αυτές τις συναρτήσεις, καθώς διακόπτουν τη σύνδεση μεταξύ της τιμής και του κλειδιού πίνακα. Επομένως, πρέπει να εξοικειωθούμε με μερικές ακόμη συναρτήσεις που θα μας επιτρέψουν να ταξινομήσουμε συσχετιστικούς πίνακες.

Όπως γνωρίζουμε, οι συσχετιστικοί πίνακες έχουν κλειδιά και τιμές. Κατά συνέπεια, η ταξινόμηση μπορεί να γίνει με κλειδιά ή με τιμές.

Ας ξεκινήσουμε ταξινομώντας κατά τιμές.

Για να ταξινομήσουμε τις τιμές ενός συσχετιστικού πίνακα με αλφαβητική σειρά, θα χρησιμοποιήσουμε τη συνάρτηση asort().

Για να το κάνετε αυτό, δημιουργήστε πρώτα έναν συσχετιστικό πίνακα, εφαρμόστε τη συνάρτηση και εμφανίστε το αποτέλεσμα στην οθόνη.

$Mass["one"]="Katya"; $Mass["two"]="Boris"; $Mass["three"]="Anya"; $Mass["four"]="Ρίτα"; asort($Mass); print_r($Mass); ?>

Όπως μπορείτε να δείτε, οι τιμές του συσχετιστικού πίνακα ταξινομούνται με αλφαβητική σειρά, ωστόσο, η σύνδεσή τους με τα πλήκτρα διατηρείται.

Η λειτουργία λειτουργεί με τον ίδιο τρόπο arsort(), εκτός από το ότι ταξινομεί τις τιμές του συσχετιστικού πίνακα με αντίστροφη σειρά.

$Mass["one"]="Katya"; $Mass["two"]="Boris"; $Mass["three"]="Anya"; $Mass["four"]="Ρίτα"; arsort($Mass); print_r($Mass); ?>

Εδώ πάλι μπορούμε να δούμε ότι οι τιμές των στοιχείων του πίνακα διατηρούν τη συσχέτιση τους με τα κλειδιά, αλλά ταξινομούνται με αντίστροφη σειρά.

Μπορούμε να ταξινομήσουμε τον ίδιο συσχετιστικό πίνακα κατά κλειδιά.

Όπως πιθανώς ήδη μαντέψατε, αυτό μπορεί να γίνει με αλφαβητική ή αντίστροφη σειρά.

Για να ταξινομήσουμε τον πίνακα κατά πλήκτρα με αλφαβητική σειρά, χρειαζόμαστε μια συνάρτηση ksort().

$Mass["one"]="Katya"; $Mass["two"]="Boris"; $Mass["three"]="Anya"; $Mass["four"]="Ρίτα"; ksort($Mass); print_r($Mass); ?>

Ο πίνακας ταξινομείται κατά πλήκτρα με αλφαβητική σειρά.

Για να ταξινομήσετε έναν πίνακα με τα πλήκτρα του με αντίστροφη σειρά, χρησιμοποιήστε τη συνάρτηση krsort().

$Mass["one"]="Katya"; $Mass["two"]="Boris"; $Mass["three"]="Anya"; $Mass["four"]="Ρίτα"; krsort($Mass); print_r($Mass); ?>

Νομίζω ότι όλα είναι ξεκάθαρα από το στιγμιότυπο οθόνης.

Προσαρμοσμένη ταξινόμηση

Μπορούμε επίσης να ορίσουμε τη δική μας σειρά ταξινόμησης, δηλαδή να δημιουργήσουμε μια προσαρμοσμένη ταξινόμηση.

Η PHP παρέχει επίσης ειδικές λειτουργίες για αυτό.

Υπάρχει μια λειτουργία για προσαρμοσμένη ταξινόμηση λιστών usort().

Θα χρειαστούν δύο επιχειρήματα. Το πρώτο όρισμα είναι ο πίνακας μας. το δεύτερο όρισμα θα περιέχει το όνομα της συνάρτησης που συγκρίνει δύο στοιχεία.

Η συνάρτηση σύγκρισης θα λάβει δύο μεταβλητές και θα πρέπει να επιστρέψει μία από τις ακόλουθες τιμές:

1 – εάν το πρώτο στοιχείο σύγκρισης είναι μεγαλύτερο από το δεύτερο.

-1 – εάν το δεύτερο είναι μεγαλύτερο από το πρώτο.

0 – αν τα στοιχεία είναι ίσα.

Με αυτόν τον τρόπο, για παράδειγμα, μπορούμε να ταξινομήσουμε τα στοιχεία ενός πίνακα σε αύξουσα σειρά του μήκους τους.

Για να γίνει αυτό, δηλώνουμε πρώτα τον ίδιο τον πίνακα, ο οποίος θα περιέχει στοιχεία συμβολοσειράς διαφόρων μηκών.

Μετά από αυτό, θα χρησιμοποιήσουμε τη συνάρτηση για προσαρμοσμένη ταξινόμηση usort(). Θα το περάσουμε ως ορίσματα: το όνομα του πίνακα μας και το όνομα της συνάρτησης που δημιουργήσαμε για να συγκρίνουμε στοιχεία.

Μετά από όλα αυτά, μπορούμε να εμφανίσουμε το αποτέλεσμα στην οθόνη για να βεβαιωθούμε ότι τα στοιχεία μας είναι ταξινομημένα με αύξουσα σειρά ως προς το μήκος τους.

$Mass = array("Andrey", "Yana", "Katya"); συνάρτηση check_length($str1,$str2)( $length1 = strlen($str1); $length2 = strlen($str2); if($length1 == $length2): επιστροφή 0; elseif($length1

Παίρνουμε το εξής αποτέλεσμα. Τα στοιχεία του πίνακα μας ταξινομούνται κατά σειρά αυξανόμενου μήκους.

Μπορούμε επίσης να κάνουμε προσαρμοσμένη ταξινόμηση του συσχετιστικού πίνακα από τα κλειδιά του. Για αυτό χρειαζόμαστε μια συνάρτηση uksort()και τον ίδιο τον συσχετιστικό πίνακα.

Ας αφήσουμε την προσαρμοσμένη λειτουργία ίδια, δηλαδή να συγκρίνουμε το μήκος των πλήκτρων.

Τα πλήκτρα στοιχείων πίνακα ταξινομούνται με αύξουσα σειρά του μήκους τους.

Και μπορούμε επίσης να δημιουργήσουμε ένα προσαρμοσμένο είδος του συσχετιστικού πίνακα από τις τιμές των στοιχείων του. Η λειτουργία θα μας βοηθήσει σε αυτό uasort().

Η αρχή παραμένει η ίδια.

$Mass["one"]="yana"; $Mass["two"]="andrey"; $Mass["three"]="katya"; συνάρτηση check_length($str1,$str2)( $length1 = strlen($str1); $length2 = strlen($str2); if($length1 == $length2): επιστροφή 0; elseif($length1

Ο πίνακας ταξινομείται τώρα αυξάνοντας τα μήκη των τιμών του.

Φυσικά, μια συνάρτηση χρήστη μπορεί να είναι διαφορετική, για παράδειγμα, μπορεί να μεταφέρει τιμές σε ένα κοινό μητρώο ή να κάνει κάποια άλλα πράγματα.

Για να κατανοήσετε πλήρως πώς λειτουργεί η προσαρμοσμένη ταξινόμηση, πρέπει να εξασκηθείτε και να προσπαθήσετε να γράψετε κάποιο είδος δικής σας συνάρτησης σύγκρισης.

Ωστόσο, τώρα νομίζω ότι έχετε πλήρη κατανόηση του πώς μπορείτε να ταξινομήσετε τα στοιχεία ενός πίνακα και πώς να χρησιμοποιήσετε αυτά τα ταξινομημένα στοιχεία.

Εξασκηθείτε, γράψτε τα σχόλιά σας και μοιραστείτε το άρθρο με φίλους χρησιμοποιώντας κουμπιά κοινωνικών δικτύων.

Εάν δεν έχετε εγγραφεί ακόμα στις ενημερώσεις ιστολογίου, τότε εγγραφείτε. Η φόρμα συνδρομής είναι παρακάτω.

Η Άννα Κοτελνίκοβα ήταν μαζί σου. Τα λέμε στα επόμενα άρθρα.



Συνιστούμε να διαβάσετε

Κορυφή