Καταμέτρηση στοιχείων πίνακα με την count()

06 Αυγ 2011 | PHP

Δεν επιτρέπονται τα σχόλια.


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

Μερικές περιπτώσεις που θα πρέπει να γνωρίζουμε το πλήθος των στοιχείων ενός πίνακα είναι οι ακόλουθες:

  • Θέλετε να προσπελάσετε όλα τα στοιχεία του πίνακα με ένα βρόχο for.
  • Μπορείτε να προβάλετε το πλήθος των στοιχείων ενός πίνακα στους χρήστες. Για παράδειγμα το πλήθος των αποτελεσμάτων μιας αναζήτησης
  • Μπορείτε να εμφανίσετε το μέσο όρο των στοιχείων του πίνακα (σε συνδυασμό με τη συνάρτηση array_sum())

Με την PHP είναι εύκολο να μετρήσουμε το πλήθος των στοιχείων ενός πίνακα χάρη στη συνάρτηση count(). Σε αυτό το άρθρο θα μάθουμε πως να χρησιμοποιούμε τη συνάρτηση count() για την καταμέτρηση τόσο πινάκων με δείκτες όσο και με σχέσεις καθώς επίσης και πίνακες πολλαπλών επιπέδων. Τέλος θα δούμε πως μπορούμε να προσπελάσουμε όλα τα στοιχεία ενός πίνακα με δείκτες χρησιμοποιώντας τη συνάρτηση count() σε συνδυασμό με ένα βρόχο for().

Βασική χρήση της συνάρτησης count()

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

$music_groups = array('The Doors', 'Pink Floyd', 'Madrugada', 'Radiohead');

// Θα εκτυπώσει τον αριθμό 4
echo count($music_groups);

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

$song_info = array(
"title" => "Cry for love",
"band" => 'Iggy Pop',
"duration" => '03:31',
"type" => 'rock'
);

// Θα εκτυπώσει επίσης τον αριθμό 4
echo count($song_info);

Προσπέλαση των στοιχείων ενός πίνακα με την count() και το βρόχο for()

Μπορείτε αν θέλετε να χρησιμοποιήσετε τη συνάρτηση count() σε συνδυασμό με το βρόχο for() για να προσπελάσετε όλα τα στοιχεία ενός πίνακα. Ακολουθεί ένα παράδειγμα :

$music_groups = array('The Doors', 'Pink Floyd', 'Madrugada', 'Radiohead');

$total_elements count($music_groups);

for($i = 0; $i < $total_elements; $i++)
{
    echo $music_groups[$i];

    if($i < $total_elements - 1)
    {
        echo ", ";
    }
}

Το παραπάνω παράδειγμα δημιουργεί αρχικά ένα πίνακα με τέσσερα μουσικά συγκροτήματα, στη συνέχεια χρησιμοποιεί τη συνάρτηση count() για να αναθέσει στη μεταβλητή $total_elements το σύνολο των στοιχείων του πίνακα $music_groups. Τέλος πραγματοποιούμε ένα βρόχο στα στοιχεία του πίνακα από το 0 μέχρι το $total_elements – 1 και στο εσωτερικό του βρόχου εκτυπώνουμε την εκάστοτε τιμή.

Με τη χρήση της συνάρτησης count() θα πρέπει να είστε λίγο προσεκτικοί όταν τη χρησιμοποιείτε με τον βρόχο for(). Όπως είδατε στο άρθρο Δημιουργία πινάκων στην PHP, η PHP δεν κάνει διακρίσεις σε πίνακες με δείκτες και σε πίνακες με σχέσεις. Επίσης θα θυμάστε πως ακόμα και οι πίνακες με δείκτες δεν είναι υποχρεωτικό να έχουν συνεχόμενους αριθμούς στα κλειδιά τους. Πάρτε ως παράδειγμα το ακόλουθο:

error_reporting(E_ALL);
ini_set( 'display_errors', true );

$music_groups = array(0 => 'The Doors', 1 => 'Pink Floyd', 2 => 'Madrugada', 112 => 'Radiohead');

$total_elements = count($music_groups);

// Ο ακόλουθος κώδικας θα εκτυπώσει The Doors, Pink Floyd, Madrugada
// και μία προειδοποίηση που θα λέει πως το στοιχείο 3 δεν έχει οριστεί.
for($i=0; $i < $total_elements; $i++)
{
    echo $music_groups[$i];
    if($i < $total_elements -1)
    {
        echo ", ";
    }
}

Στον παραπάνω κώδικα βλέπουμε πόσο εύκολο είναι να προκύψει ένα σφάλμα επειδή οι δείκτες του πίνακα δεν έχουν συνεχόμενη σειρά. Σε αυτό το παράδειγμα ο πίνακας με τα μουσικά συγκροτήματα έχει δείκτες που έχουν οριστεί από το χρήση και δεν έχουν κάποια συγκεκριμένη σειρά. Στη συνέχεια η συνάρτηση count() επιστρέφει τον αριθμό 4 στη μεταβλητή $total_elements γιατί τόσα είναι και τα στοιχεία του πίνακα. Τέλος, όταν στο βρόχο for η μεταβλητή $i πάρει την τιμή 3 και εμείς προσπαθήσουμε να ανακτήσουμε το στοιχείο του πίνακα με δείκτη 3 τότε προκύπτει και η προειδοποίηση γιατί δεν έχουμε κάποιο στοιχείο με τιμή 3, αλλά το επόμενο στη σειρά είναι αυτό με δείκτη 112.

Αυτό που μάθαμε σε αυτό το παράδειγμα είναι πως το count() – 1 είναι ίσο με το τελευταίο στοιχείο του πίνακα μόνο στην περίπτωση που οι δείκτες του πίνακα είναι αριθμημένοι με τη σειρά

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

Καταμέτρηση πολυδιάστατων πινάκων

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

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

$music_groups = array(
    "The Doors" => array(
        "song_1" => "Break on through",
        "song_2" => "The end"
    ),
    "Pink Floyd" => array(
        "song_1" => "Wish you where here"
        "song_2" => "Shine on your crazy diamonds"
    ),
    "Madrugada" => array(
        "song_1" => "Sirens",
        "song_2" => "Whatever happened to you"
    ),
    "Radiohead" => array(
        "song_1" => "Creep",
        "song_2" => "Street spirit"
    )
);

// θα εκτυπώσει 4
echo count($music_groups);

Ο παραπάνω κώδικας επιστρέφει τον αριθμό 4 γιατί η συνάρτηση count() πραγματοποιεί καταμέτρηση μόνο των στοιχείων του πρώτου επιπέδου που είναι οι τιμές «The Doors», «Pink Floyd», «Madrugada» και «Radiohead».

Αν θέλετε να πάρετε το σύνολο των τιμών από όλους τους πίνακες ενός πολυδιάστατου πίνακα τότε θα πρέπει να περάσετε τη σταθερά COUNT_RECURSIVE σαν δεύτερο όρισμα στη συνάρτηση count();

$music_groups = array(
    "The Doors" => array(
        "song_1" => "Break on through",
        "song_2" => "The end"
    ),
    "Pink Floyd" => array(
        "song_1" => "Wish you where here"
        "song_2" => "Shine on your crazy diamonds"
    ),
    "Madrugada" => array(
        "song_1" => "Sirens",
        "song_2" => "Whatever happened to you"
    ),
    "Radiohead" => array(
        "song_1" => "Creep",
        "song_2" => "Street spirit"
    )
);

// θα εκτυπώσει 12
echo count($music_groups, COUNT_RECURSIVE);

Στον παραπάνω κώδικα, η συνάρτηση count(), πραγματοποιεί αρχικά καταμέτρηση των στοιχείων πρώτου επιπέδου, που είναι οι τιμές «The Doors», «Pink Floyd», «Madrugada» και «Radiohead», οπότε έχει τέσσερα στοιχεία ως αυτό το σημείο και στη συνέχεια πραγματοποιεί και καταμέτρηση στα στοιχεία κάθε πίνακα που ανήκει στο επόμενο επίπεδο με αποτέλεσμα να μετρήσει άλλα 8 στοιχεία και να μας επιστρέψει το αποτέλεσμα των 12 στοιχείων συνολικά.

Περίληψη

Σε αυτό το tutorial μάθαμε πως να χρησιμοποιούμε τη συνάρτηση count() για να μετρήσουμε το σύνολο των στοιχείων ενός πίνακα. Επίσης μάθαμε:

  • Πως να χρησιμοποιούμε τη συνάρτηση count() και το βρόχο for() για να προσπελάσουμε τα στοιχεία ενός πίνακα
  • Τι πρέπει να προσέχουμε όταν χρησιμοποιούμε τη συνάρτηση count() σε συνδυασμό με το βρόχο for() σε πίνακες που δεν έχουν συνεχόμενους δείκτες
  • Μάθαμε πως να μετράμε το σύνολο των στοιχείων σε ένα πίνακα με πολλαπλά επίπεδα

Περισσότερα για τον CorfuGmr

CorfuGmr

Ονομάζομαι Νίκος και ασχολούμαι με το internet και την κατασκευή ιστοσελίδων από το 1998. Σήμερα, μετά από 12 χρόνια γεμάτα με ενημέρωση, εκπαίδευση και εξάσκηση έχω ανεβάσει σε ένα άλλο επίπεδο τις γνώσεις μου και τις τεχνικές μου. Στα άρθρα μου προσπαθώ να σας δείξω τα μικρά, αλλά σημαντικά πράγματα που με έχουν ανεβάσει σε αυτό το επίπεδο.








Σχόλια



9 Αυγούστου 2011

[…] άρθρο Καταμέτρηση στοιχείων πίνακα με την count() σας έδειξα τον τρόπο να πραγματοποιήσετε βρόχο στα […]


Συγνώμη, τα σχόλια για αυτό το άρθρο είναι κλειστά.



^
Top
css.php