Συσχετικός πίνακας σε κανονική php. Εκμάθηση πινάκων στην PHP

05.11.2021

Καλημερα χαμπραζιτελικι!

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

array("key1" => "value1", "key2" => "value2")); ?>

Τότε, φυσικά, είναι εύκολο να αποκτήσουμε τις αξίες που μας ενδιαφέρουν:

Echo $array["dimension1"]["key1"]; // τιμή 1

Τι γίνεται όμως αν έχουμε έναν n-διάστατο πίνακα; Για παράδειγμα, πέντε διαστάσεων:

$array = array("dimension1" => array("dimension2" => array("dimension3" => array("dimension4" => array("dimension5" => array("value1" => "Hey! I\ "m value1", "value2" => "Hey! I\"m value2"))))));

Για να λάβουμε την τιμή κατά κλειδί, για παράδειγμα, "value1", πρέπει να γράψουμε τον ακόλουθο κώδικα:

Echo $array["dimension1"]["dimension2"]["dimension3"]["dimension4"]["dimension5"]["value1"]; // Γεια σου! Είμαι η αξία 1

Δεν θα έλεγα όμορφη μια τέτοια ηχογράφηση, αν και είναι σωστή. Προτείνω να κάνετε αυτή τη σημειογραφία λίγο πιο ωραία κάνοντας την να μοιάζει με αυτό:

Echo easyA($array)->dimension1->dimension2->dimension3->dimension4->dimension5->value1; // Γεια σου! Είμαι η αξία 1

Συμφωνώ, φαίνεται πολύ πιο ωραίο σε σύγκριση με την τυπική ηχογράφηση.

Άρα, πρώτα πρέπει να δημιουργήσουμε μια κλάση που θα επεξεργάζεται τον πίνακα μας. Ας το ονομάσουμε easyArray και ας το κάνουμε Singleton:

Κώδικας

class easyArray( private static $instance; // Κατάσταση της κλάσης. private $Array; // Πίνακας που μεταβιβάστηκε στην κλάση. private function __construct())( // Filed out the constructor. ) private function __clone()) ( // Κατατέθηκε η μέθοδος κλωνοποίησης. ) δημόσια στατική συνάρτηση getInstance())( if(null === self::$instance)( self::$instance = new self(); ) return self::$instance; )

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

Κώδικας

δημόσια συνάρτηση loadArray($newArray)( if(is_array($newArray))( $this->Array = $newArray; return $this; )else( $error = "Λυπούμαστε, δεν περάσατε έναν πίνακα."; ρίξτε νέο Exception( $error);
Από τον κώδικα μπορείτε να δείτε ότι ελέγχουμε επίσης τι μεταβιβάστηκε στην είσοδο της μεθόδου. Εάν δεν ήταν ένας πίνακας που πέρασε, απλώς θα ρίξουμε μια εξαίρεση με το σφάλμα " Δυστυχώς, δεν περάσατε έναν πίνακα". Εάν ο έλεγχος ήταν επιτυχής, τότε γράφουμε τον πίνακα που προκύπτει σε μια ιδιωτική μεταβλητή και επιστρέφουμε το τρέχον αντικείμενο.

Λοιπόν, τώρα θα παρακάμψουμε τη μαγική μέθοδο "__get()" της κλάσης μας. Αυτό είναι απαραίτητο για να έχουμε το αποτέλεσμα που θέλουμε. Ετσι:

Κώδικας

δημόσια συνάρτηση __get($index)( if(isset($this->Array[$index]))(if(is_array($this->Array[$index]))($this->loadArray($this-> Array[$index] return $this )else( return $this->Array[$index];) )else( $error = "Λείπει κλειδί (."$index.") στον πίνακα"; ($error);

Πρώτα απ 'όλα, ελέγχουμε την παρουσία του ζητούμενου κλειδιού στον πίνακα, εάν δεν υπάρχει, ρίχνουμε μια εξαίρεση με το σφάλμα ". "Λείπει το κλειδί (."$index.") στον πίνακα"". Στη συνέχεια, ελέγχουμε αν το ζητούμενο κλειδί είναι πίνακας. Εάν υπάρχει μια τιμή για ένα τέτοιο κλειδί στον πίνακα, τότε απλώς επιστρέφουμε αυτήν την τιμή. Και αν είναι πίνακας, τότε τη στέλνουμε στο " loadArray ($newArray)" και επιστρέψτε το τρέχον αντικείμενο ($this).

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

Κώδικας

δημόσια συνάρτηση arrayReturn() ( return $this->Array; )

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

Echo easyArray::getInstance()->loadArray($array)->dimension1->dimension2->dimension3->dimension4->dimension5->value1; // Γεια σου! Είμαι η αξία 1

Έγινε ακόμη περισσότερο από ό,τι ήταν. Αλλά αυτό το πρόβλημα μπορεί να λυθεί και για αυτό χρειαζόμαστε μια απλή συνάρτηση:

Συνάρτηση easyA($newArray)( return easyArray::getInstance()->loadArray($newArray); )

Λοιπόν, τώρα ας ελέγξουμε τι πήραμε ως αποτέλεσμα:

Κώδικας

array("dimension2" => array("dimension3" => array("dimension4" => array("dimension5" => array("value1" => "Hey! I\"m value1", "value2" => "Γεια! I\"m value2")))))); require_once("easyArray.php"); require_once("easyArrayFunction.php"); echo easyA($array)->dimension1->dimension2->dimension3->dimension4->dimension5->value1; // Γεια σου! I\"m value1 echo easyA($array)->dimension1->dimension2->dimension3->dimension4->dimension5->value2; // Hey! I\"m value2 ?>
Όλα λειτουργούν όπως προβλέπεται.

Επιπλέον, αυτή η τάξη μπορεί να περάσει αρχεία ρυθμίσεωντύπος:

Κώδικας

array("dimension2" => array("dimension3" => array("dimension4" => array("dimension5" => array("value1" => "Hey! I\"m value1 from file array.php", "value2" => "Hey! I\"m value2 from file array.php")))))); ?>


Για να γίνει αυτό πρέπει να χρησιμοποιήσετε την ακόλουθη κατασκευή:

Κώδικας

echo easyA(require_once ("array.php"))->dimension1->dimension2->dimension3->dimension4->dimension5->value1; // Γεια σου! Είμαι value1 από το αρχείο array.php

Μπορεί να ανακάλυψα ξανά τον τροχό, αλλά νομίζω ότι αυτό το άρθρο θα ενδιαφέρει τόσο τους αρχάριους όσο και τους άλλους προγραμματιστές.

Σας ευχαριστώ για την προσοχή σας.

Ας καταλάβουμε τι είναι ένας πίνακας στην PHP. Ένας πίνακας είναι απλώς μια ομάδα τιμών που παρουσιάζονται ως ένα ενιαίο σύνολο. Φανταστείτε ένα καλάθι με φρούτα. Περιέχει μπανάνα, πορτοκάλι, μήλο και σταφύλια. Στην PHP, μπορείτε να αναπαραστήσετε μια τέτοια δομή ως πίνακας. Το καλάθι είναι η ίδια η συστοιχία και συγκεκριμένα φρούτα είναι τα στοιχεία του.

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

Ένας πίνακας δηλώνεται στην PHP χρησιμοποιώντας αγκύλες, όπως αυτό:

Έτσι δημιουργήσαμε έναν κενό πίνακα.

Στον παλιό κώδικαΜπορείτε να βρείτε ένα παράδειγμα ενός τέτοιου ορισμού πίνακα:

$fruits = array();

Αυτή η καταχώρηση είναι πλέον ξεπερασμένη και δεν πρέπει να χρησιμοποιείται!

Μπορείτε επίσης να δημιουργήσετε έναν πίνακα που περιέχει ήδη κάποιες τιμές. Αυτό γίνεται ως εξής:

$fruits = ["μήλο", "πορτοκάλι", "σταφύλι"];

Μπορείτε να εμφανίσετε τον πίνακα που προκύπτει χρησιμοποιώντας τη συνάρτηση var_dump που ήδη γνωρίζουμε:

Και ας τρέξουμε αυτό το σενάριο ανοίγοντας στο πρόγραμμα περιήγησης: http://myproject.loc/arrays.php
Θα δούμε τα εξής:

C:\OpenServer\domains\myproject.loc\www\arrays.php:4: πίνακας (μέγεθος=3) 0 => συμβολοσειρά "μήλο" (μήκος=5) 1 => συμβολοσειρά "πορτοκαλί" (μήκος=6) 2 => κορδόνι "σταφύλι" (μήκος=5)

Αριθμημένοι πίνακες

Ο πίνακας είναι ένας τύπος αντικειμένου, δηλαδή ένας πίνακας. Size=3 είναι το μέγεθος του πίνακα (περιέχει 3 στοιχεία). 0, 1, 2 είναι πλήκτρα πίνακα, που λέγονται και ευρετήρια. Αυτά τα κλειδιά αποθηκεύουν τιμές, στην περίπτωσή μας αυτές οι τιμές είναι συμβολοσειρές. Όπως μπορούμε να δούμε, τα πλήκτρα του πίνακα αριθμούνται ξεκινώντας από το μηδέν και στη συνέχεια απλώς αυξάνονται κατά ένα.

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

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

Αποτέλεσμα αυτού του κώδικα:

Ας πάρουμε το στοιχείο στο ευρετήριο 2:

Αποτέλεσμα:

Αν προσπαθήσουμε να πάρουμε ένα στοιχείο με ανύπαρκτο ευρετήριο, για παράδειγμα - 3:

Τότε θα λάβουμε μια προειδοποίηση ότι δεν βρέθηκε στοιχείο με τέτοιο κλειδί.

Προσθήκη και αφαίρεση στοιχείων πίνακα

Ας προσθέσουμε ένα άλλο στοιχείο στον πίνακα χρησιμοποιώντας την ακόλουθη κατασκευή:

$fruits = "μάνγκο";

Ας δούμε στη συνέχεια ξανά τον πίνακα μας χρησιμοποιώντας var_dump:

Το αποτέλεσμα είναι ένα άλλο στοιχείο με δείκτη 3:

C:\OpenServer\domains\myproject.loc\www\arrays.php:7: πίνακας (μέγεθος=4) 0 => συμβολοσειρά "μήλο" (μήκος=5) 1 => συμβολοσειρά "πορτοκαλί" (μήκος=6) 2 => κορδόνι "σταφύλι" (μήκος=5) 3 => κορδόνι "μάνγκο" (μήκος=5)

Για να αφαιρέσετε στοιχεία πίνακα, χρησιμοποιήστε την κατασκευή unset. Ας αφαιρέσουμε το στοιχείο στο ευρετήριο 2:

Αποτέλεσμα αυτού του κώδικα:

C:\OpenServer\domains\myproject.loc\www\arrays.php:9: πίνακας (μέγεθος=3) 0 => συμβολοσειρά "μήλο" (μήκος=5) 1 => συμβολοσειρά "πορτοκαλί" (μήκος=6) 3 => συμβολοσειρά "μάνγκο" (μήκος=5)

Όπως μπορούμε να δούμε, το στοιχείο με δείκτη 2 δεν υπάρχει πλέον και έχει εμφανιστεί μια «τρύπα» στους σειριακούς αριθμούς των κλειδιών. Αν τώρα προσθέσουμε ένα νέο στοιχείο, ο δείκτης του θα είναι 4, αλλά αυτή η τρύπα θα παραμείνει. Έτσι ακριβώς λειτουργεί και αυτό πρέπει να θυμάστε.

Και πάλι πίσω στα κλειδιά

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

Αποτέλεσμα:

C:\OpenServer\domains\myproject.loc\www\arrays.php:5: πίνακας (μέγεθος=3) 5 => συμβολοσειρά "μήλο" (μήκος=5) 3 => συμβολοσειρά "πορτοκαλί" (μήκος=6) 9 => κορδόνι "σταφύλι" (μήκος=5)

Όπως μπορούμε να δούμε, τα πλήκτρα είναι τώρα 5, 3 και 9.
Αν τώρα προσθέσουμε ένα στοιχείο στον πίνακα, θα έχει έναν δείκτη μεγαλύτερο από τη μέγιστη αριθμητική τιμή του κλειδιού:

Αποτέλεσμα:

C:\OpenServer\domains\myproject.loc\www\arrays.php:7: πίνακας (μέγεθος=4) 5 => συμβολοσειρά "μήλο" (μήκος=5) 3 => συμβολοσειρά "πορτοκαλί" (μήκος=6) 9 => κορδόνι "σταφύλι" (μήκος=5) 10 => κορδόνι "μάνγκο" (μήκος=5)

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

Αποτέλεσμα:

C:\OpenServer\domains\myproject.loc\www\arrays.php:7: πίνακας (μέγεθος=4) 5 => συμβολοσειρά "μήλο" (μήκος=5) 3 => συμβολοσειρά "πορτοκαλί" (μήκος=6) 9 => κορδόνι "σταφύλι" (μήκος=5) 20 => κορδόνι "μάνγκο" (μήκος=5)

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

Αποτέλεσμα:

C:\OpenServer\domains\myproject.loc\www\arrays.php:5: πίνακας (μέγεθος=3) 5 => συμβολοσειρά "μήλο" (μήκος=5) 3 => συμβολοσειρά "πορτοκαλί" (μήκος=6) 9 => συμβολοσειρά "grape" (μήκος=5) C:\OpenServer\domains\myproject.loc\www\arrays.php:9: πίνακας (μέγεθος=3) 5 => συμβολοσειρά "mango" (μήκος=5) 3 = > κορδόνι "πορτοκαλί" (μήκος=6) 9 => κορδόνι "σταφύλι" (μήκος=5)

Συνειρμικοί πίνακες

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

"Τίτλος άρθρου", "κείμενο" => "Κείμενο άρθρου"]; $article["author"] = "Όνομα συγγραφέα"; var_dump($article);

Το αποτέλεσμα αυτού του κώδικα:

C:\OpenServer\domains\myproject.loc\www\arrays.php:6: πίνακας (μέγεθος=3) "title" => συμβολοσειρά "Τίτλος άρθρου" (μήκος=29) "κείμενο" => συμβολοσειρά "Κείμενο άρθρου" (length=23) "author" => συμβολοσειρά "Author name" (length=19)

Τέλεια, τώρα μπορούμε να χρησιμοποιήσουμε αυτό μέσα στη σήμανση HTML:

"Title of the article", "text" => "Text of the article", "author" => "Author of the article" ]; ?> <?= $article["title"] ?>



Αποτέλεσμα:

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

Θυμηθείτε, στην αρχή του μαθήματος είπα ότι τα πλήκτρα πίνακα αποθηκεύουν κάποιες τιμές, και στην περίπτωσή μας αυτές είναι συμβολοσειρές. Έτσι, ένα στοιχείο ενός πίνακα, σε γενικές γραμμές, μπορεί να είναι οτιδήποτε. Ακόμα και η ίδια η συστοιχία. =)

"Τίτλος άρθρου", "κείμενο" => "Κείμενο άρθρου", "συγγραφέας" => [ "first_name" => "Ivan", "last_name" => "Ivanov" ] ]; var_dump($article);

Αποτέλεσμα:

C:\OpenServer\domains\myproject.loc\www\arrays.php:10: πίνακας (μέγεθος=3) "title" => συμβολοσειρά "Τίτλος άρθρου" (μήκος=29) "κείμενο" => συμβολοσειρά "Κείμενο άρθρου" (length=23) "author" => array (size=2) "first_name" => string "Ivan" (length=8) "last_name" => string "Ivanov" (length=12)

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

"Τίτλος άρθρου", "κείμενο" => "Κείμενο άρθρου", "συγγραφέας" => [ "first_name" => "Ivan", "last_name" => "Ivanov" ] ]; echo $article["author"]["first_name"];

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

Ιβάν

Ας χρησιμοποιήσουμε τώρα αυτές τις τιμές στο πρότυπο που έχουμε ήδη χρησιμοποιήσει:

"Τίτλος άρθρου", "κείμενο" => "Κείμενο άρθρου", "συγγραφέας" => [ "first_name" => "Ivan", "last_name" => "Ivanov" ] ]; ?> <?= $article["title"] ?>



Αποτέλεσμα:

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

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

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

  1. Πίνακες με αριθμητικά ευρετήρια
  2. $fruits="μήλο"; $fruits="αχλάδι"; $fruits="πορτοκάλι"; $fruits="βερίκοκο";

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

  3. Συσχετικός πίνακας
  4. Αυτή η επιλογή για τη δημιουργία ενός πίνακα χρησιμοποιεί ένα αντικείμενο πίνακα:

    $fruits = array(1 => "μήλο", 2 => "αχλάδι", 3 => "πορτοκάλι", 4 => "βερίκοκο"); // Ξεκινώντας από εκδόσεις PHP 5.4 $fruits = σειρά[ 1 => "μήλο", 2 => "αχλάδι", 3 => "πορτοκάλι", 4 => "βερίκοκο" ];

    Πρόσβαση σε στοιχεία πίνακα

    1 2 3 4 5 6 7 8 $fruits [ 0 ] = "μήλο" ; $fruits [ 1 ] = "αχλάδι" ;$fruits [ 2 ] = "πορτοκαλί" ;
    $fruits [ 3 ] = "βερίκοκο" ; ηχώ"Το πρώτο στοιχείο του πίνακα είναι"
    $fruits [ 3 ] = "βερίκοκο" ; .$φρούτα[0]. "
    " ;

    "; ηχώ
    "Το δεύτερο στοιχείο του πίνακα είναι "
    .
    ";

    $φρούτα[1]. "

    "Το τρίτο στοιχείο του πίνακα είναι ". $φρούτα[2]. ")

    $fruits="μήλο"; $fruits="αχλάδι"; $fruits="πορτοκάλι"; $fruits="βερίκοκο"; echo "Το πρώτο στοιχείο του πίνακα είναι ". $φρούτα."

    "; echo "Το δεύτερο στοιχείο του πίνακα είναι ". $fruits .""; echo "Το τρίτο στοιχείο του πίνακα είναι ". $fruits ."

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


    ";

    Σπουδαίος:
    Ο δείκτης ενός στοιχείου σε έναν συσχετιστικό πίνακα μπορεί να μην είναι ένας αριθμός, αλλά μια λέξη (τύπος
    σειρά
    ";

    Αποτέλεσμα:

    "Το τρίτο στοιχείο του πίνακα είναι "Ας δούμε ένα παράδειγμα:

    Παράδειγμα:

    Δημιουργήστε έναν πίνακα μαθητή με τις τιμές των ονομάτων, των επωνύμων και των ηλικιών των μαθητών. Εμφάνιση των τιμών των στοιχείων πίνακα $student = array("Όνομα" => John, "Surname" => Smith, "Age" => 20); echo "όνομα χρήστη" . $student["Όνομα"] . "($student["Name"] = "Γιάννης"; $student["Surname"] = "Smith"; $student["Ηλικία"] = 20; echo "όνομα χρήστη" . $student["Όνομα"] . "):

    "; echo "επώνυμο χρήστη " . $student["Επώνυμο"] ."

    "; echo "user age " . $student["Age"] ."

    Τα κλειδιά συμβολοσειράς (ευρετήρια) πρέπει πάντα να περικλείονται σε εισαγωγικά

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

    1 2 3 4 5 6 7 8 9 αντικείμενο συλλογής

    $student = πίνακας ("John" , "Smith" , 20 );

    Αποτέλεσμα:

    $student = array("John","Smith", 20);

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

    1 2 3 4 5 6 7 8 9 10 11 12 "1" , 2 => 2 , "multi" => πίνακας ( "1_1" => "1_1" ) ;

    var_dump($array_odnom["first"]);

    Αποτέλεσμα:

    var_dump($array_odnom[2]);

    "; echo "Το δεύτερο στοιχείο του πίνακα είναι ". $fruits ." var_dump($array_odnom["multi"]["1_1"]);


    ?>
    1 2 3 4 5 6 7 8 9 10 11 12 "1", 2 => 2, "multi" => πίνακας ("1_1" => "1_1")); var_dump($array_odnom ["first"]); var_dump($array_odnom); var_dump($array_odnom ["multi"]["1_1"]); ?>

    Συμβολοσειρά (1) "1" int(2) συμβολοσειρά (3) "1_1"

    δημιουργήστε έναν δισδιάστατο πίνακα με διαστάσεις 3 x 2. Συμπληρώστε τον με τιμές για την πρώτη γραμμή: "1_1", "1_2", "1_3"; για τη δεύτερη γραμμή: "2_1", "2_2", "2_3". Εμφάνιση του πρώτου στοιχείου ενός πίνακαΕκτέλεση:



    $array_odnom = πίνακας ( 1 => πίνακας ( 1 => "1_1" , 2 => "1_2" , 3 => "1_3" ) , 2 => πίνακας ( 1 => "2_1" , 2 => "2_2" , 3 => "2_3" ) , ) ;
    echo $array_odnom [ 1 ] [ 1 ] ;

    $array_odnom = πίνακας(1 => πίνακας(1 => "1_1", 2 => "1_2", 3 => "1_3"), 2 => πίνακας (1 => "2_1", 2 => "2_2" , 3 => "2_3")),); echo $array_odnom;

    Εργασία php2_1:
    δημιουργήστε έναν δισδιάστατο πίνακα 3 x 3 - την επάνω αριστερή γωνία του Πυθαγόρειου πίνακα πολλαπλασιασμού (1, 2, 3; 4, 6, 8 ...)
    Εργαστηριακές εργασίες:

    Ας υποθέσουμε ότι έχετε κάποιο είδος διαφήμισης και πολλά διαφορετικά άτομα στα οποία πρέπει να στείλετε αυτήν τη διαφήμιση. Για να το κάνετε αυτό, δημιουργείτε ένα πρότυπο με το περιεχόμενο της διαφήμισης, μέσα στο οποίο υπάρχουν διάφορες μεταβαλλόμενες παράμετροι: μια σειρά από ονόματα ατόμων και μια σειρά από συμβάντα. Εμφάνιση μιας έκδοσης της τελικής διαφήμισης στην οθόνη. Για να ορίσετε πίνακες, χρησιμοποιήστε έναν συσχετιστικό πίνακα.
    Χρησιμοποιήστε το πρότυπο διαφήμισης και εστιάστε στα χρώματα: Κόκκινο – συστοιχίες. Καφέ – αριθμητική μεταβλητή. .
    Μπλε – σταθερό.
    Αγαπητέ Ιβάν Ιβάνοβιτς!


    Σας προσκαλούμε να
    1 2 3 4 5 6 7 8 9 10 11 12 13 14 ημέραανοιχτές πόρτες Ημερομηνία εκδήλωσης: 12 Μαΐου.) ; Με εκτίμηση, Βασίλη.Συμπληρώστε τον κωδικό: // σταθερή δήλωση define("SIGN" , "Με εκτίμηση, Βάσια"// πίνακας για ονόματα παραληπτών $names = πίνακας (... ) ;
    "
    // πίνακας για συμβάντα

    $events = πίνακας("op_doors" =>
    "ανοιχτή μέρα"

, "vistavka" => "έκθεση", ... ) ; $str =Είναι δύσκολο να φανταστεί κανείς τον προγραμματισμό χωρίς αυτά. Τι είναι ένας πίνακας;
Ένας πίνακας είναι ένα δομημένο σύνολο δεδομένων.
Από τη δομή τους μπορεί κανείς να το προσδιορίσει αυτό απλός πίνακαςή συνειρμικός. Είναι αδύνατο να πούμε με βεβαιότητα ποιο είναι καλύτερο, γιατί... Ο ένας ή ο άλλος τύπος πρέπει να χρησιμοποιείται ανάλογα με την κατάσταση.

Πώς να δημιουργήσετε έναν απλό πίνακα στην PHP

Έτσι μοιάζει ένας απλός πίνακας:

Θα ήθελα να επιστήσω αμέσως την προσοχή σας στα δεδομένα (ναι, τα έγραψα έτσι επίτηδες :)). Συμβολοσειρά τύπου δεδομένων ή $φρούτα[2]. "γράφετε πάντα σε εισαγωγικά, δεν έχει σημασία ποια, τόσο μονό όσο και διπλό (το κύριο πράγμα είναι ότι η γραμμή αρχίζει και τελειώνει με το ίδιο εισαγωγικό). Ο αριθμός 29 έχει τύπο ακέραιος αριθμός, ή αριθμοί - εισαγωγικά δεν χρειάζονται για αυτούς τους τύπους δεδομένων.
Ας ελέγξουμε πώς μοιάζει ο πίνακας $my_array:

"; print_r($my_array); echo ""; /* λήψη Array ( => Καρέκλα => Cloud => 29) */ ?>

Έτσι μοιάζει ένας απλός πίνακας.
0,1,2 — ευρετήρια του πίνακα μας. Με τη βοήθεια των ευρετηρίων μπορούμε να συμπεράνουμε κάτι συγκεκριμένο από έναν πίνακα.

Επίσης, μπορούμε να δημιουργήσουμε τον ίδιο πίνακα αν γράψουμε:

Και, υπάρχει και ένας τρίτος τρόπος:

"Chair", 1 => "Cloud", 2 => 29);?>

Και το τέταρτο :)

τα ευρετήρια θα συμπληρώνονται από 0.

PHP τι είναι ένας συσχετικός πίνακας

Έχουμε ήδη καταλάβει τι είναι ένας απλός πίνακας. Ένας συσχετικός πίνακας είναι διαφορετικός ως προς αυτό χρησιμοποιούνται κλειδιά αντί για ευρετήρια. Δηλαδή, δεν θα χρησιμοποιούμε πλέον το 0,1 ή το 2 για την πρόσβαση στις τιμές Ας γράψουμε τον απλό πίνακα μας ως συσχετιστικό.

Καρέκλα => Σύννεφο => 29) */ ?>

Και για να καλέσουμε θα χρησιμοποιήσουμε

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

"Chair", "sky" => "Cloud", "number" => 29); ?>

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

Λίγα λόγια για αυτόν τον γίγαντα :)

πίνακας ("color" => "κόκκινο", "έτος" => "2010", "mark" => "M5"), "audi" => πίνακας ("color" => "μαύρο", "έτος" = > "2011", "mark" => "TT")); print_r($auto); // εξόδου πίνακα echo $auto["bmw"]["mark"]; // M5 ?>

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

Τελευταία ενημέρωση: 1.11.2015

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

Samsung Galaxy ACE II"; $phones = " Sony Xperia Z3"; $phones = "Samsung Galaxy III"; για($i=0;$i "; ?>

Εδώ δημιουργείται ένας πίνακας $phones με τέσσερα στοιχεία. Κάθε στοιχείο στον πίνακα αντιπροσωπεύει ένα ζεύγος κλειδιού-τιμής. Έτσι, το πρώτο στοιχείο $phones = "Nokia N9" έχει ένα κλειδί - τον αριθμό 0, και μια τιμή - τη συμβολοσειρά "Nokia N9". Σε τέτοιους πίνακες, τα αριθμητικά κλειδιά ονομάζονται επίσης ευρετήρια.

Μπορείτε να χρησιμοποιήσετε τη συνάρτηση count() για να βρείτε τον αριθμό των στοιχείων σε έναν πίνακα. Και λόγω του γεγονότος ότι τα πλήκτρα έχουν σειρά από το 0 έως το 3 και γνωρίζοντας το μέγεθος του πίνακα, μπορείτε να εμφανίσετε τα στοιχεία του πίνακα σε έναν βρόχο for.

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

Print_r($phones);

Θα λάβουμε την ακόλουθη έξοδο:

Array ( => Nokia N9 => Samsung Galaxy ACE II => Sony Xperia Z3 => Samsung Galaxy III)

Αυτή η δημιουργία πίνακα θα ήταν επίσης ισοδύναμη με το εξής:

"; ?>

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

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

// λάβετε το στοιχείο με το κλειδί 1 $myPhone = $τηλέφωνα; echo "$myPhone
"; // εκχώρηση νέας τιμής $phones = "Samsung X650"; echo "$phones
";

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

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

τελεστής πίνακα

Ένας τρόπος για να δημιουργήσετε έναν πίνακα συζητήθηκε παραπάνω. Υπάρχει όμως ένα άλλο, το οποίο περιλαμβάνει τη χρήση του τελεστή array().

Ο τελεστής array() παίρνει ένα σύνολο στοιχείων. Τα κλειδιά επίσης δεν προσδιορίζονται ρητά εδώ. Επομένως, η PHP αριθμεί αυτόματα στοιχεία από το μηδέν. Αλλά μπορούμε επίσης να καθορίσουμε ένα κλειδί για κάθε στοιχείο:

"iPhone5", "samsumg"=>"Samsung Galaxy III", "nokia" => "Nokia N9", "sony" => "Sony XPeria Z3"); echo $phones["samsumg"]; ?>

Η λειτουργία => σας επιτρέπει να αντιστοιχίσετε ένα κλειδί σε μια συγκεκριμένη τιμή.

Επανάληψη σε συσχετιστικούς πίνακες

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

"iPhone5", "samsumg"=>"Samsung Galaxy III", "nokia" => "Nokia N9", "sony" => "Sony XPeria Z3"); foreach($phones ως $item) echo "$item
"; ?>

Σε έναν βρόχο foreach, όλα τα στοιχεία αφαιρούνται διαδοχικά από τον πίνακα και η τιμή τους τοποθετείται στη μεταβλητή που καθορίζεται μετά τη λέξη-κλειδί ως. Σε αυτήν την περίπτωση, και οι τέσσερις τιμές από τον πίνακα $phones τοποθετούνται στη μεταβλητή $item με τη σειρά τους. Όταν ανακτηθεί το τελευταίο στοιχείο από τον πίνακα, ο βρόχος τελειώνει.

Ο βρόχος foreach σάς επιτρέπει να ανακτάτε όχι μόνο τιμές, αλλά και κλειδιά στοιχείων:

"iPhone5", "samsumg"=>"Samsung Galaxy III", "nokia" => "Nokia N9", "sony" => "Sony XPeria Z3"); foreach($phones as $key=>$value) echo "$key => $value
"; ?>

Εδώ, κατά την επανάληψη μέσω των στοιχείων του βρόχου, το κλειδί του στοιχείου θα μεταφερθεί στη μεταβλητή $key και η τιμή του θα μεταφερθεί στη μεταβλητή $value.

Μια εναλλακτική λύση στον βρόχο foreach είναι να χρησιμοποιήσετε τη λίστα και κάθε συνάρτηση:

"iPhone5", "samsumg"=>"Samsung Galaxy III", "nokia" => "Nokia N9", "sony" => "Sony XPeria Z3"); ενώ (list($key, $value) = every($phones)) echo "$key => $value
"; ?>

Ο βρόχος while θα τρέξει έως ότου η κάθε συνάρτηση επιστρέψει false. Η κάθε συνάρτηση επαναλαμβάνεται μέσω όλων των στοιχείων του πίνακα $phones και την επιστρέφει ως πίνακα που περιλαμβάνει το κλειδί και την τιμή του στοιχείου. Αυτός ο πίνακας μεταβιβάζεται στη συνέχεια συναρτήσεις λίσταςκαι εκχωρεί τις τιμές του πίνακα στις μεταβλητές μέσα στις παρενθέσεις. Όταν ολοκληρωθεί η επανάληψη κάθε συνάρτησης μέσω του πίνακα $phones, θα επιστρέψει false και ο βρόχος while θα τελειώσει.

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

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

array("iPhone5", "iPhone5s", "iPhone6") , "samsumg"=>array("Samsung Galaxy III", "Samsung Galaxy ACE II"), "nokia" => πίνακας ("Nokia N9", "Nokia Lumia 930"), "sony" => πίνακας ("Sony XPeria Z3", "Xperia Z3 Dual", "Xperia T2 Ultra")); foreach ($phones ως $brand => $items) ( echo "

$μάρκα

"; ηχώ"
    "; foreach ($items as $key => $value) ( echo "
  • $value
  • ";) ηχώ"
"; } ?>

Και κατά την έξοδο, θα λάβουμε 4 λίστες:

Για να αποκτήσετε πρόσβαση σε ένα δεδομένο στοιχείο, πρέπει επίσης να καθορίσετε τα κλειδιά σε αγκύλες. Για παράδειγμα, ας δούμε το πρώτο στοιχείο στον πρώτο πίνακα. Δεδομένου ότι το κλειδί του πρώτου πίνακα είναι "apple" και το κλειδί του πρώτου στοιχείου στον πρώτο πίνακα είναι ο αριθμός 0 (καθώς δεν προσδιορίσαμε ρητά τα κλειδιά):

Echo $phones["apple"];

Μπορείτε να πάρετε το δεύτερο στοιχείο του τρίτου πίνακα με παρόμοιο τρόπο:

Echo $phones["nokia"];

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

array("apple" => "iPhone5", "samsumg" => "Samsung Galaxy III", "nokia" => "Nokia N9"), "tablet" => array("lenovo" => "Lenovo IdeaTab A3500" , "samsung" => "Samsung Galaxy Tab 4", "apple" => "Apple iPad Air")); foreach ($technics as $tovar => $items) ( echo "

$προϊόν

"; ηχώ"
    "; foreach ($items as $key => $value) ( echo "
  • $key: $value
  • ";) ηχώ"
"; ) // εκχωρήστε διαφορετική τιμή σε ένα από τα στοιχεία $technics["phones"]["nokia"] = "Nokia Lumnia 930"; // εμφάνιση αυτής της τιμής echo $technics["phones"]["nokia" ];