Τετάρτη 23 Ιανουαρίου 2013

Ταξινόμηση Πινάκων.

Ένα σύνηθες "πρόβλημα" είναι η ταξινόμηση ενός πίνακα. Εδώ παραθέτουμε πολλά παραδείγματα για διαφορετικούς τύπους πινάκων και δεδομένων. Υπάρχουν δύο πραδείγματα για  Numerically Indexed πίνακες και για Sorting Associative πίνακες.

Αναλυτικότερα:



 

Sorting Numerically Indexed Arrays

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

<?php
   $flowers = array("rose", "daisy" , "orchid", "tulip", "camomile");
   sort($flowers);

   for ($i=0; $i <= 4; $i++) //prints the array elements
     echo $flowers[$i]."<br \>";
?>
Αποτέλεσμα:
camomile
daisy
orchid
rose
tulip



Τώρα παίρνουμε έναν πίνακα που έχει διάφορες τιμές. Παρακάτω δείχνουμε πως ταξινομούμε τον συγκεκριμένο πίνακα.
<?php
$prices = array(1.25, 0.75 , 1.15, 1.00, 0.50);
sort($prices);

for ($i=0; $i <= 4; $i++) //prints the array elements
    echo $prices[$i]."<br \>";
?>
Αποτέλεσμα:
0.50
0.75
1.00
1.15
1.25


Σημείωση:  Η συνάρτηση sort λαμβάνει υπόψην αν είναι κεφαλαία τα γράμματα ή όχι. Συγκεκριμένα θεωρεί τα κεφαλαία γράμματα μικρότερα των μικρών. π.χ. Το "Α" είναι μικρότερο του "Ζ", αλλά το "Ζ" είναι μικρότερο του "a".


Sorting Associative Arrays

Δεν μπορούμε να χρησιμοποιήσουμε την συνάρτηση sort() για associative πίνακα. Για να ταξινομήσουμε τον συγκεκριμένο πίνακα πρέπει να χρησιμοποιήσουμε την συνάρτηση asort() διότι κρατά μαζί το key με τις τιμές καθώς ταξινομήται ο πίνκας.
Η παρακάτω ταξινόμηση γίνεται στην ουσία στις τιμές και όχι στα keys.

<?php
  $shop = array ( "rose" => "5.00",
                "daisy" => "4.00",
                "orchid" => "2.00",
              ); 

  asort($shop);

  foreach($shop as $key => $value)
    echo $key." costs ".$value." dollars<br />";  //print the array elements
?>
Αποτέλεσμα:
orchid costs 2.00 dollars
daisy costs 4.00 dollars
rose costs 5.00 dollars


Αν θέλουμε να ταξινομήσουμε τον πίνακα βάση του κλειδιού του τότε θα χρησιμοποήσουμε την συνάρτηση ksort(). Παρακάτω ο κώδικας:
<?php
$shop = array ( "rose" => "5.00",
                "daisy" => "4.00",
                "orchid" => "2.00",
              ); 
ksort($shop);

foreach($shop as $key => $value)
  echo $key." costs ".$value." dollars<br />";  //print the array elements

?>
Αποτέλεσμα:
daisy costs 4.00 dollars
orchid costs 2.00 dollars
rose costs 5.00 dollars

Δεν υπάρχουν σχόλια:

Δημοσίευση σχολίου