/ / / PHP: πίνακας σε πίνακα. Αναζήτηση PHP Array

PHP: πίνακας σε πίνακα. Αναζήτηση PHP Array

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

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

Κατασκευή συστοιχιών

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

public $ aNone = array (); // ο πίνακας περιγράφεται και δεν περιέχει τίποτα

δημόσια $ aFact = συστοιχία ("αβοκάντο", "ροδάκινο", "κεράσι"); // αυτός ο πίνακας έχει τρία στοιχεία

Δημιουργία πίνακα κατά τη διαδικασία ελέγχου ορισμένων συνθηκών:

$ cSrcLine = "αναλυμένη γραμμή δεδομένων";

για ($ i = 0; $ i <13; $ i ++) {

$ cUserLine = inputUserLine (); // εισαγωγή κάτι

εάν (checkFunc ($ cSrcLine, $ cUserLine) {

$ aResult [] = "Ναι"; // προσθήκη στον πίνακα PHP

} αλλο {

$ aResult [] = "Όχι";

}}

}}

Ως αποτέλεσμα της εκτέλεσης αυτού του παραδείγματος,ένας πίνακας 13 στοιχείων, οι τιμές των οποίων θα είναι μόνο οι συμβολοσειρές "Ναι" ή "Όχι". Τα στοιχεία θα λάβουν δείκτες από 0 έως 12. Το ίδιο αποτέλεσμα μπορεί να επιτευχθεί γράφοντας προηγουμένως τον "μελλοντικό" πίνακα PHP σε μια συμβολοσειρά:

$ cFutureArray = "";

για ($ i = 0; $ i <13; $ i ++) {

$ cUserLine = inputUserLine (); // εισαγωγή κάτι

if ($ i> 0) {$ cFutureArray. = "|"; }

if (checkFunc ($ cSrcLine, $ cUserLine) {$ cFutureArray. = "Ναι";

} else {$ cFutureArray. = "Όχι"; }

}}

$ aResult = έκρηξη ("|", $ cFutureArray);

php πίνακα σε συμβολοσειρά

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

Πολλά συστήματα διαχείρισης ιστοτόπων (SMS)χρησιμοποιήστε πίνακες "με μεγάλο τρόπο". Από τη μία πλευρά, αυτή είναι καλή πρακτική, από την άλλη, καθιστά δύσκολη την εφαρμογή. Ακόμα κι αν ο συγγραφέας κατανοεί το δόγμα "PHP-array-in-array", τότε δεν πρέπει να γίνεται κατάχρηση: όχι μόνο ο προγραμματιστής θα πρέπει να συνηθίσει τη σύνθετη σημειογραφία. Συχνά μετά από λίγο ο ίδιος ο δημιουργός θα θυμάται για πολύ καιρό τι έγραψε αρχικά:

συστοιχία επιστροφής (

"view_manager" => πίνακας (41, "template_path_stack" => πίνακας (__DIR__. "/../view",),

"router" => array ("route" => array ("sayhello" => array (

"type" => "ZendMvcRouterHttpLiteral",

"options" => array ("route" => "/ sayhello", "defaults" => array (

"controller" => "HelloworldControllerIndex", "action" => "index",)))))

"controllers" => array ("invokables" => array (

"HelloworldControllerIndex" => "HelloworldControllerIndexController"))

) ·

Αυτό είναι το PHP Array in Array Sample Practice by ZF2. Δεν είναι πολύ εμπνευσμένο στην αρχή, αλλά λειτουργεί και πιθανώς κάνει αυτό το πλαίσιο μια επιτυχία (παράδειγμα από το ZendSkeletonApplication / module / Helloworld / config / module.config.php module).

αφαιρέστε το στοιχείο του πίνακα php

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

Απλό, προσιτό και κατανοητό

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

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

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

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

Απλοί και συνειρμικοί πίνακες

Η συγγραφή ενός πίνακα δύο διαστάσεων είναι ένα άλλο ζεύγοςαγκύλες "[" και "]", για παράδειγμα: $ aSrcData [1] [2] σημαίνει αναφορά στο στοιχείο [2] του πίνακα [1] που περιλαμβάνεται στον πίνακα $ aSrcData. Δεν υπάρχει απαίτηση στην PHP να δηλώσετε τα δεδομένα εκ των προτέρων. Οποιεσδήποτε δηλωθείσες πληροφορίες μπορούν πάντα να ελεγχθούν για ύπαρξη.

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

$ aAnketa ["name"] = "Ιβάνοφ";
$ aAnketa ["ηλικία"] = 42;
$ aAnketa ["work"] = "Διευθυντής";
$ aAnketa ["active"] = true;
$ aTable [] = $ aAnketa;

$ aAnketa ["name"] = "Petrov";
$ aAnketa ["ηλικία"] = 34;
$ aAnketa ["work"] = "Διαχειριστής";
$ aAnketa ["active"] = true;
$ aTable [] = $ aAnketa;

$ aAnketa ["name"] = "Afanasiev";
$ aAnketa ["ηλικία"] = 28;
$ aAnketa ["work"] = "Εργαζόμενος";
$ aAnketa ["ενεργός"] = ψευδής;
$ aTable [] = $ aAnketa;

$ sOne. = implode (";", $ aTable [1]). "<br/>"; // δεύτερος πίνακας PHP σε συμβολοσειρά
$ sOne. = $ aTable [1] ["εργασία"]; // πρόσβαση σε ένα στοιχείο του δεύτερου πίνακα

Το αποτέλεσμα αυτού του παραδείγματος (ο πρώτος πίνακας είναι κανονικός, τα κλειδιά σε αυτό ξεκινούν από 0, ο δεύτερος πίνακας είναι συσχετισμένος, έχει τέσσερα κλειδιά: "όνομα", "ηλικία", "εργασία", "ενεργό"):

$ sOne = "Petrov; 34; Manager; 1 <br/> Manager";

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

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

αναζήτηση πίνακα php

Κλειδιά για εργασία με συστοιχίες

Αν πριν είχε σημασία πώς λειτουργούσαν όλα, τότεΤα τελευταία χρόνια, οι παραδόσεις της δυαδικής εποχής, όταν ένας προγραμματιστής ήθελε να μάθει πώς ακριβώς αποθηκεύονταν τα στοιχεία ενός πίνακα και ήθελε να έχει άμεση πρόσβαση σε αυτά, ξεχάστηκαν τελείως. Υπάρχουν πολλές κωδικοποιήσεις χαρακτήρων που καταλαμβάνουν περισσότερα από ένα byte στη μνήμη. Η λέξη "bit" μπορεί τώρα να βρεθεί μόνο σε λειτουργίες αναζήτησης bit, αλλά η αναζήτηση σε έναν πίνακα PHP είναι ένα ξεχωριστό θέμα. Η πρόσβαση στο στοιχείο μπορεί να είναι απλή και συνειρμική. Στην πρώτη περίπτωση, τα στοιχεία του πίνακα (με οποιονδήποτε από τους τύπους που είναι διαθέσιμοι στην PHP) αριθμούνται 0, 1, 2, ... Στη δεύτερη περίπτωση, ο προγραμματιστής καθορίζει το δικό του ευρετήριο, που συχνά αποκαλείται «κλειδί» πρόσβαση στην επιθυμητή τιμή.

$ aLine ["φρούτα"] = "πορτοκαλί"; // εδώ κλειδί πίνακα PHP = "φρούτο"

ή (για να είναι όλα σωστά, παρατηρώντας την κωδικοποίηση της σελίδας και του κώδικα):

$ aLine [iconv ("utf-8", "CP1251", "fruit")] = iconv ("utf-8", "CP1251", "orange");

Όταν προσθέτετε μια νέα τιμή στον πίνακα $ aLine:

$ aLine [] = iconv ("utf-8", "CP1251", "ροδακινί");
$ aLine [iconv ("utf-8", "CP1251", "λαχανικό")] = iconv ("utf-8", "CP1251", "αγγούρι");
$ aLine [] = iconv ("utf-8", "CP1251", "μελιτζάνα");

ως αποτέλεσμα της εκτέλεσης βρόχου:

foreach ($ aLine ως $ ck => $ cv) {
$ cOne. = $ ck. "=". cv $ "<br/>";
}}

θα λάβω:

φρούτο = πορτοκάλι
0 = ροδάκινο
λαχανικό = αγγούρι
1 = μελιτζάνα

Κατά την προσθήκη των στοιχείων "ροδάκινο" και "μελιτζάνα", το κλειδί PHP της συστοιχίας σχηματίζεται διαδοχικά από το 0 και κατά τον καθορισμό της τιμής του, θα είναι ίσο με αυτήν την τιμή.

Αφαίρεση στοιχείων από έναν πίνακα

php διαγραφή πίνακα

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

Μπορείτε να το κάνετε ευκολότερα. Αν εφαρμόσουμε στο τελευταίο παράδειγμα:

unset ($ aLine [0]); // αφαίρεση στοιχείου από τον πίνακα PHP

τότε το αποτέλεσμα θα είναι:

φρούτο = πορτοκάλι
λαχανικό = αγγούρι
1 = μελιτζάνα

Επιλογές χειρισμού στοιχείων πίνακαπολλά μπορούν να κατασκευαστούν. Για παράδειγμα, χρησιμοποιώντας τις συναρτήσεις: implode () και explode (), μπορείτε να γράψετε έναν πίνακα PHP σε μια συμβολοσειρά με ένα διαχωριστικό και να τον αναλύσετε ξανά σε έναν άλλο πίνακα χρησιμοποιώντας διαφορετικό διαχωριστικό.

Για απλή διαγραφή ολόκληρου πίνακα σε PHP, γράψτε απλά: unset ($ aLine);

Είναι αρκετά.

Αναζήτηση σε έναν πίνακα

Η PHP περιέχει ειδικές λειτουργίες αναζήτησηςarray_keys (), array_values ​​(), array_key_exists (), και in_array (), ωστόσο, πριν αποφασίσετε να τα χρησιμοποιήσετε, θα πρέπει να εξετάσετε το ενδεχόμενο να κάνετε μόνοι σας μια αναζήτηση σε πίνακα PHP.

κλειδί πίνακα php

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

Στην PHP, μπορείτε να καλέσετε συναρτήσεις των οποίων τα ονόματα καθορίζονται κατά την εκτέλεση του προγράμματος. Ένα πολύ πρακτικό παράδειγμα από τη βιβλιοθήκη PHPWord που σας επιτρέπει να διαβάζετε και να δημιουργείτε έγγραφα MS Word:

$ elements = array ("Text", "Inline", "TextRun", "Link", "PreserveText", "TextBreak",
"ListItem", "ListItemRun", "Table", "Image", "Object", "Footnote",
"Endnote", "CheckBox", "TextBox", "Field", "Line");

$ συναρτήσεις = πίνακας ();

για ($ i = 0; $ i <count ($ στοιχεία); $ i ++) {
$ functions [$ i] = "προσθήκη". $ στοιχεία [$ i];
}}

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

Καλώντας τις συναρτήσεις $ [4] για στοιχεία $ [4], μπορείτε να έχετε τέλεια αναζήτηση και γρήγορα αποτελέσματα.

Ταξινόμηση στοιχείων

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

php την τιμή στον πίνακα

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

πίνακας php σε πίνακα

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

Ενσωματωμένοι πίνακες

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

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

$ cSrcLine = "List Text TextItemRun TextBox ListItem TextBox Check Box CheckBox TextBox Footnote";

$ aSrc = έκρηξη ("", $ cSrcLine);
$ cDstLine = "";

για ($ i = 0; $ i <count ($ aSrc); $ i ++) {
$ cFind = "[". $ aSrc [$ i]. "]";
εάν (! is_integer (strpos ($ cDstLine, $ cFind)))) {
$ cDstLine. = $ cFind;
}}
}}
$ aDst = έκρηξη ("] [", $ cDstLine);

$ cOne = έκρηξη (";", $ aDst);

Ως αποτέλεσμα, η μεταβλητή $ cOne θα λάβει μόνο αυτές τις τιμές από την αρχική συμβολοσειρά που εμφανίζονται εκεί μία φορά: "Text; ListItemRun; TextBox; ListItem; Check; Box; CheckBox; Subnote".

Ρωσική γλώσσα σε κλειδιά και αξίες

Δεν συνιστάται να χρησιμοποιείτε οτιδήποτε σχετικόμε εθνικές κωδικοποιήσεις, σε συντακτικές κατασκευές. Η ρωσική γλώσσα, όπως όλες οι άλλες γλώσσες των οποίων οι χαρακτήρες υπερβαίνουν το a-z, δεν θα δημιουργήσει προβλήματα στην περιοχή δεδομένων, αλλά όχι στη σύνταξη του κώδικα. Μερικές φορές ακόμη και μια απλή εργασία PHP "να εκτυπώσετε έναν πίνακα σε έναν εκτυπωτή ή σε μια οθόνη" θα οδηγήσει σε "krakozyabra" και πιο συχνά απλώς θα σταματήσει το σενάριο.

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

Σύνταξη PHP και περιβάλλον γλώσσας

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

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

Αρέσει:
0
Δημοφιλή μηνύματα
Πνευματική Ανάπτυξη
Φαγητό
yup