Λειτουργίες για εργασία με πίνακες php. Γράψιμο σε PHP: Εργασία με πίνακες (αρχή). Τι συμβαίνει λοιπόν με αυτό;

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

Σύνταξη

Ορισμός με χρήση πίνακας()

Ένας πίνακας μπορεί να δημιουργηθεί από μια κατασκευή γλώσσας πίνακας(). Λαμβάνει ως παραμέτρους έναν ορισμένο αριθμό ζευγών κλειδιών => τιμών που χωρίζονται με κόμματα. $arr = array("foo" => "bar" , 12 => true );$arr [ "foo" ]; // μπαρ
echo $arr [ 12 ]; // 1
?>

Το κλειδί μπορεί να είναι είτε ακέραιος αριθμός, ή σειρά. Εάν το κλειδί είναι μια τυπική αναπαράσταση ακέραιος αριθμός, θα ερμηνευτεί ως τέτοιο (δηλαδή το "8" θα ερμηνευτεί ως 8, ενώ το "08" θα ερμηνευτεί ως "08"). Στην PHP δεν υπάρχει διαφορά μεταξύ ευρετηρίου και συσχετιστικών πινάκων. Υπάρχει μόνο ένας τύπος πίνακα, ο οποίος μπορεί να περιέχει ευρετήρια αριθμητικών και συμβολοσειρών. Η τιμή μπορεί να είναι οποιοσδήποτε τύπος διαθέσιμος στην PHP.

$arr = array("somearray" => array(6 => 5, 13 => 9, "a" => 42 ));$arr [ "somearray" ][ 6 ]; // 5
echo $arr [ "somearray" ][ 13 ]; // 9
echo $arr [ "somearray" ][ "a" ]; // 42
?>

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

// Αυτός ο πίνακας είναι ισοδύναμος...
array(5 => 43 , 32 , 56 , "b" => 12 ); // ...αυτός ο πίνακας
array(5 => 43 , 6 => 32 , 7 => 56 , "b" => 12 );
?>

Χρησιμοποιώντας το TRUE ως κλειδί θα λάβετε ένα κλειδί τύπου 1 ακέραιος αριθμός. Χρησιμοποιώντας το FALSE ως κλειδί θα λάβετε ένα κλειδί τύπου 0 ακέραιος αριθμός. Η χρήση NULL ως κλειδιού θα έχει ως αποτέλεσμα μια κενή συμβολοσειρά. Η χρήση κενού συμβολοσειράς ως κλειδιού θα δημιουργήσει (ή θα αντικαταστήσει) ένα κενό κλειδί συμβολοσειράς και την τιμή του. αυτό δεν είναι το ίδιο με τη χρήση κενών αγκύλων. Δεν μπορείτε να χρησιμοποιήσετε πίνακες ή αντικείμενα ως κλειδιά. Αυτό θα δημιουργήσει μια προειδοποίηση: Παράνομος τύπος μετατόπισης.

Δημιουργία/Τροποποίηση με χρήση σύνταξης αγκύλων

Μπορείτε επίσης να τροποποιήσετε έναν υπάρχοντα πίνακα ορίζοντας ρητά τιμές σε αυτόν. Αυτό γίνεται με την ανάθεση τιμών στον πίνακα όταν καθορίζονται σε παρενθέσεις από το κλειδί. Μπορείτε επίσης να παραλείψετε το κλειδί, οπότε προσθέστε ένα κενό ζευγάρι παρενθέσεων (" ") στο όνομα της μεταβλητής. Εάν ο πίνακας $arr δεν υπάρχει ήδη, θα δημιουργηθεί. Επομένως, αυτός είναι ένας άλλος τρόπος για να ορίσετε έναν πίνακα. Για να αλλάξετε μια συγκεκριμένη τιμή, απλώς αντιστοιχίστε στο στοιχείο με το κλειδί του μια νέα τιμή. Εάν θέλετε να αφαιρέσετε ένα ζεύγος κλειδιού/τιμής, πρέπει να χρησιμοποιήσετε τη συνάρτηση unset() .
Σημείωση: Όπως αναφέρθηκε παραπάνω, εάν δεν καθορίσετε ένα κλειδί σε παρένθεση, τότε θα ληφθεί το μέγιστο των υπαρχόντων ακέραιων ευρετηρίων και το νέο κλειδί θα είναι αυτή η μέγιστη τιμή + 1. Εάν δεν υπάρχουν ακόμη ακέραιοι ευρετήρια, τότε το το κλειδί θα είναι 0 (μηδέν). Εάν καθορίσετε ένα κλειδί στο οποίο έχει ήδη εκχωρηθεί μια τιμή, θα αντικατασταθεί.

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

// Δημιουργήστε έναν απλό πίνακα.
$array = πίνακας(1, 2, 3, 4, 5);
print_r($array); // Τώρα αφαιρούμε κάθε στοιχείο, αλλά αφήνουμε τον ίδιο τον πίνακα ανέγγιχτο:
foreach ($array as $i => $value ) (
unset($array [ $i ]);
}
print_r($array); // Δημιουργήστε το στοιχείο (σημειώστε ότι το νέο κλειδί θα είναι 5,
// και όχι 0, όπως θα περίμενε κανείς).
$array = 6 ;
print_r($array); // Εκ νέου ευρετηρίαση:
$array = array_values($array);
$array = 7 ;
print_r($array);
?>
Το παραπάνω παράδειγμα θα παράγει τα εξής: Πίνακας ( => 1 => 2 => 3 => 4 => 5) Πίνακας () Πίνακας ( => 6) Πίνακας ( => 6 => 7)

Χρήσιμα χαρακτηριστικά

Υπάρχει επαρκής αριθμός χρήσιμων συναρτήσεων για εργασία με πίνακες. Δείτε την ενότητα για τις συναρτήσεις για την εργασία με πίνακες.
Σημείωση: Λειτουργία unset()σας επιτρέπει να διαγράψετε κλειδιά πίνακα. Λάβετε υπόψη ότι ο πίνακας ΔΕΝ θα γίνει εκ νέου ευρετήριο. Εάν χρησιμοποιούσατε μόνο "κανονικούς αριθμητικούς δείκτες" (αύξηση κατά ένα ξεκινώντας από το μηδέν), μπορείτε να αναπροσαρμόσετε τον πίνακα χρησιμοποιώντας array_values() .

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

Το Array κάνει και δεν κάνει

Γιατί είναι λάθος το $foo;

Θα πρέπει πάντα να περικλείετε το ευρετήριο ενός συσχετιστικού πίνακα σε εισαγωγικά. Για παράδειγμα, γράψτε $foo["bar"], όχι $foo. Αλλά γιατί είναι λάθος το $foo; Μπορεί να έχετε δει την ακόλουθη σύνταξη σε παλαιότερα σενάρια: $foo [ bar ] = "εχθρός" ;
echo $foo [ bar ];
// και τα λοιπά.
?>

Αυτό είναι λάθος, αν και λειτουργεί. Τότε γιατί αυτό δεν είναι αλήθεια; Ο λόγος είναι ότι αυτός ο κώδικας περιέχει μια απροσδιόριστη σταθερά (bar) αντί για μια συμβολοσειρά ("bar" - σημειώστε τα εισαγωγικά) και η PHP μπορεί στο μέλλον να ορίσει μια σταθερά που, δυστυχώς για τον κώδικά σας, θα έχει το ίδιο όνομα. Αυτό λειτουργεί επειδή η PHP μετατρέπεται αυτόματα γυμνό κορδόνι (μια συμβολοσειρά χωρίς εισαγωγικά που δεν ταιριάζει με κανέναν γνωστό χαρακτήρα) σε μια συμβολοσειρά που περιέχει μια γυμνή συμβολοσειρά. Για παράδειγμα, εάν μια σταθερά με όνομα γραμμή δεν έχει οριστεί, τότε η PHP θα αντικαταστήσει τη γραμμή με τη συμβολοσειρά "bar" και θα τη χρησιμοποιήσει.

Σημείωση: Αυτό δεν σημαίνει ότι χρειάζεστε Πάντακλείστε το κλειδί σε εισαγωγικά. Δεν χρειάζεται να αναφέρετε σταθερές ή μεταβλητές, καθώς αυτό θα εμποδίσει την PHP να τις επεξεργαστεί. error_reporting(E_ALL);
ini_set ("display_errors" , true );
ini_set ( "html_errors" , false );
// Απλός πίνακας:
$array = πίνακας(1, 2);
$count = count($array);
για ($i = 0 ; $i< $count ; $i ++) {
echo "\nΈλεγχος $i:\n" ;
ηχώ "Κακό: " . $array [ "$i" ] . "\n" ;
ηχώ "Εντάξει: " . $array [ $i ] . "\n" ;
ηχώ "Κακό: ($array["$i"])\n";
ηχώ "Εντάξει: ($array[$i])\n";
}
?>

Σημείωση: Ο παραπάνω κώδικας θα δώσει τα εξής:

Πρόσθετα παραδείγματα που αποδεικνύουν αυτό το γεγονός:

// Ας δείξουμε όλα τα σφάλματα
error_reporting (E_ALL );$arr = array("fruit" => "apple" , "veggie" => "carrot" );// Σωστό

print $arr [ "veggie" ]; // καρότο

// Λάθος. Αυτό λειτουργεί, αλλά λόγω της απροσδιόριστης σταθεράς με
// το όνομα φρούτο προκαλεί επίσης ένα σφάλμα PHP στο επίπεδο E_NOTICE
// Σημείωση: Χρήση απροσδιόριστου σταθερού φρούτου - υποτιθέμενο "φρούτο" σε...

εκτύπωση $arr [φρούτο]; // μήλο

// Ας ορίσουμε μια σταθερά για να το αποδείξουμε
// συμβαίνει. Θα εκχωρήσουμε την τιμή "veggie" σε μια σταθερά που ονομάζεται φρούτο.

define ("φρούτα" , "λαχανικά" ); // Παρατηρήστε τώρα τη διαφορά
εκτύπωση $arr [ "φρούτο" ]; // μήλο
εκτύπωση $arr [φρούτο]; // καρότο

// Μέσα σε μια συμβολοσειρά αυτό είναι εντάξει. Δεν υπάρχουν σταθερές μέσα στις χορδές
// θεωρείται ότι τα σφάλματα E_NOTICE δεν θα συμβαίνουν εδώ

print "Hello $arr" ; // Γεια σου μήλο

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

print "Hello ($arr)" ; //Γεια σου καρότο
print "Hello ($arr["fruit"])" ; // Γεια σου μήλο

// Αυτό δεν θα λειτουργήσει και θα προκαλέσει ένα σφάλμα επεξεργασίας όπως:
// Σφάλμα ανάλυσης: σφάλμα ανάλυσης, αναμένεται T_STRING" ή T_VARIABLE" ή T_NUM_STRING"
// Αυτό, φυσικά, ισχύει και για τη χρήση autoglobal σε συμβολοσειρές

print "Hello $arr["fruit"]" ;
print "Hello $_GET["foo"]" ; // Μια άλλη δυνατότητα είναι η συνένωση
εκτύπωση "Γεια σου". $arr["φρούτο"]; // Γεια σου μήλο
?>

Πότε θα μεταφερθείτε error_reporting()στη λειτουργία εμφάνισης σφαλμάτων επιπέδου E_NOTICE (όπως E_ALL), θα δείτε αυτά τα σφάλματα. Από προεπιλογή, το error_reporting έχει οριστεί να μην τα εμφανίζει. Όπως αναφέρεται στην ενότητα σύνταξης, πρέπει να υπάρχει μια έκφραση μέσα στις αγκύλες ("[" και "]"). Αυτό σημαίνει ότι μπορείτε να γράψετε κάτι σαν αυτό:

Σημειώστε ότι το E_ERROR είναι το ίδιο έγκυρο αναγνωριστικό με τη γραμμή στο πρώτο παράδειγμα. Αλλά το τελευταίο παράδειγμα είναι ουσιαστικά ισοδύναμο με αυτό:

Επειδή το E_ERROR ταιριάζει με 1 κ.λπ. Όπως έχουμε ήδη εξηγήσει στα παραπάνω παραδείγματα, το $foo εξακολουθεί να λειτουργεί, αλλά είναι λάθος. Αυτό λειτουργεί επειδή η γραμμή αναμένεται να είναι μια σταθερά από τη σύνταξή της. Ωστόσο, σε αυτή την περίπτωση δεν υπάρχει σταθερά με όνομα γραμμή. Σε αυτήν την περίπτωση, η PHP υποθέτει ότι όταν γράφατε τη γραμμή , εννοούσατε τη συμβολοσειρά "bar" αλλά ξεχάσατε να συμπεριλάβετε εισαγωγικά.

Τι συμβαίνει λοιπόν με αυτό;

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

Μετατροπή σε πίνακα

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

Παραδείγματα

Ο τύπος πίνακα PHP είναι πολύ ευέλικτος, επομένως θα δώσουμε μερικά παραδείγματα εδώ για να σας δείξουμε τι μπορούν να κάνουν οι πίνακες. // Αυτό
$a = πίνακας("color" => "κόκκινο" ,
"γεύση" => "γλυκιά" ,
"shape" => "στρογγυλό" ,
"name" => "μήλο" ,
4 // το κλειδί θα είναι 0
);// συμπίπτει εντελώς
$a [ "color" ] = "κόκκινο" ;
$a [ "taste" ] = "γλυκό" ;
$a [ "shape" ] = "στρογγυλό" ;
$a [ "name" ] = "apple" ;
$a = 4 ; // το κλειδί θα είναι 0$b = "a" ;
$b = "b" ;
$b = "c" ;
// θα δημιουργήσει έναν πίνακα πίνακα(0 => "a" , 1 => "b" , 2 => "c"),
// ή απλώς πίνακας ("a", "b", "c")
?>

Παράδειγμα 11-4. Χρήση πίνακα ()

// Πίνακας ως χάρτη (ιδιότητες)
$map = array("έκδοση" => 4,
"OS" => "Linux" ,
"lang" => "αγγλικά" ,
"short_tags" => αληθές
);// αποκλειστικά αριθμητικά πλήκτρα
$array = πίνακας(7,
8 ,
0 ,
156 ,
- 10
);
// είναι το ίδιο με τον πίνακα (0 => 7, 1 => 8, ...)$switching = πίνακας(10, // κλειδί = 0
5 => 6 ,
3 => 7 ,
"a" => 4,
11 , // κλειδί = 6 (ο μέγιστος αριθμητικός δείκτης ήταν 5)
"8" => 2 , // κλειδί = 8 (αριθμός!)
"02" => 77, // κλειδί = "02"
0 => 12 // Η τιμή 10 θα αντικατασταθεί από το 12
);// κενός πίνακας
$empty = array();
?>
Η έξοδος του παραπάνω σεναρίου θα είναι η εξής: Λάβετε υπόψη ότι προς το παρόν δεν είναι δυνατή η απευθείας αλλαγή των τιμών του πίνακα σε έναν τέτοιο βρόχο. Ωστόσο, μπορείτε να το κάνετε αυτό: Το ακόλουθο παράδειγμα δημιουργεί έναν πίνακα που ξεκινά με ένα.

= sort($αρχεία);
print_r($αρχεία);
?>

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

Παράδειγμα 11-10. Αναδρομικοί και πολυδιάστατοι πίνακες

$fruits = πίνακας ("fruit" => πίνακας ("a" => "πορτοκαλί" ,
"b" => "μπανάνα" ,
"c" => "μήλο"
),
"numbers" => πίνακας (1,
2 ,
3 ,
4 ,
5 ,
6
),
"holes" => πίνακας ("first" ,
5 => "δεύτερο" ,
"τρίτος"
);// Μερικά παραδείγματα πρόσβασης στις τιμές του προηγούμενου πίνακα
echo $fruits [ "τρύπες" ][ 5 ]; // εκτυπώνει "δεύτερο"
echo $fruits [ "φρούτα" ][ "a" ]; // εκτυπώνει "πορτοκαλί"
unset($fruits [ "holes" ][ 0 ]); // θα διαγράψει το "first"

// Δημιουργεί έναν νέο πολυδιάστατο πίνακα

$juices [ "apple" ][ "green" ] = "καλό" ;
?>
Σημειώστε ότι κατά την εκχώρηση ενός πίνακα, η τιμή αντιγράφεται πάντα. Για να αντιγράψετε έναν πίνακα με αναφορά, πρέπει να χρησιμοποιήσετε τον τελεστή αναφοράς.

(πίνακας εντός πίνακα, μήτρα)

Τι είναι ένας πίνακας PHP;

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

Ο πίνακας μπορεί να είναι διαφορετικού τύπου, χωρίς ιδιαιτερότητες στα στοιχεία. Θα υπάρχει μόνο θέμα. Ας το πούμε αυτό προγραμματισμός Ιστού. Και τα στοιχεία θα είναι γλώσσες - HTML, CSS, JavaScript, PHP, MySQL. Υπάρχουν 5 στοιχεία συνολικά.

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

προγραμματισμός Ιστού
1. HTML
2.CSS
3. JavaScript
4.PHP
5. MySQL

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

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

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

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

Οι δείκτες στο παραπάνω παράδειγμα θα ήταν αριθμητική τιμή από 1 έως 5. Κατά την πρόσβαση στο ευρετήριο 2 θα δούμε το CSS.

Παράδειγμα πίνακα σε PHP

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

$web="HTML";
$web="CSS";
$web="JavaScript";
$web="PHP";
$web="MySQL";

$web; // αυτή η μεταβλητή περιέχει έναν πίνακα με 5 στοιχεία

// για να εμφανίσετε ένα από τα στοιχεία του πίνακα, απλώς καθορίστε το ευρετήριο στον πίνακα
echo $web; // εκτυπώνει PHP

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

ΠΙΝΑΚΑΣ ΕΥΡΕΤΗΡΙΟΥ

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

$web=array("HTML","CSS","JavaScript","PHP","MySQL");
echo $web; // θα παράγει "HTML"
echo $web; // θα εξάγει "JavaScript"
echo $web; // θα εκτυπώσει "PHP"

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

$web=array(1=>"HTML",2=>"CSS",3=>"JavaScript",4=>"PHP",5=>"MySQL");
echo $web; // HTML
echo $web; // CSS
echo $web; //PHP
Στο παράδειγμα, η μέτρηση ξεκινά από το 1. Επομένως, η μεταβλητή με δείκτη 0 είναι κενή.

Στο παρακάτω παράδειγμα δεν θα καθορίσουμε ευρετήριο.

$day="Δευτέρα"; // ευρετήριο 0
$day="Τρίτη"; // 1
$day="Τετάρτη"; // 2
$day="Πέμπτη"; // 3
$day="Παρασκευή"; // 4
Μπορείτε να δείτε ότι η διαδοχική πλήρωση γίνεται από την αρχή.

ΣΥΝΕΡΓΑΤΙΚΗ ΠΑΡΑΣΤΑΣΗ

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

$user["nick"]="Λογική";
$user["name"]="Pavel";
$user["age"]="25";
$user["sex"]="Άνδρας";

$user; // η μεταβλητή $user περιέχει έναν πίνακα με 4 στοιχεία με δείκτες γραμμάτων

// εμφανίζει το στοιχείο του πίνακα, υποδεικνύοντας το δείκτη γραμμάτων του
echo $web["name"]; // θα εκτυπώσει "Pavel"
Όπως μπορείτε να δείτε, όλα είναι πολύ απλά. Παραθέτουμε μόνο την τιμή του δείκτη.

Δισδιάστατος πίνακας

Αν χάσατε το πρώτο μέρος με μονοδιάστατο πίνακα, σας συμβουλεύω ανεπιφύλακτα να το διαβάσετε.
Για να το θέσω απλά, είναι ένας πίνακας μέσα σε έναν πίνακα. Δηλαδή, τα στοιχεία ενός μεγάλου πίνακα είναι διαφορετικά. Τέτοιοι πίνακες επιβραδύνουν πολύ το έργο του σεναρίου, φορτώνοντας τη μνήμη RAM, επομένως για γρήγορη επεξεργασία τέτοιων ομάδων δεδομένων, έχουν δημιουργηθεί βάσεις δεδομένων (Τι είναι μια βάση δεδομένων;), αλλά περισσότερα για αυτό αργότερα. Ας δούμε ένα παράδειγμα δισδιάστατου πίνακα.

// πίνακας με ονόματα μέρη του κόσμου
$m = array("Ευρώπη","Ασία","Αφρική","Αμερική","Αυστραλία και Ωκεανία");

// πίνακας με τα ονόματα των χωρών
$s = array("Ρωσία","Ουκρανία","Λευκορωσία","Καζακστάν");

// πίνακας με ονόματα κεφαλαίων
$с = πίνακας("Μόσχα","Κίεβο","Μινσκ","Αστάνα");

// δημιουργία ενός δισδιάστατου πίνακα Γεωγραφία
$geography = πίνακας ($m, $s, $c);
?>
Οι πίνακες που περιλαμβάνονται, όπως παρατηρήσατε, μπορούν να έχουν διαφορετικό αριθμό στοιχείων. Από το τμήμα για τους μονοδιάστατους πίνακες προκύπτει ότι κάθε στοιχείο του πίνακα μπορεί να έχει ένα ευρετήριο. Ας εκχωρήσουμε λοιπόν μια διαφορετική τιμή σε κάθε πίνακα που περιλαμβάνεται.

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

$geography = array("Parts of the World"=>$m, "Countries"=>$s, "Capitals"=>$s);

Λειτουργίες για εργασία με πίνακες php

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

Μοιάζει με αυτό: Κώδικας PHP

Foreach (πίνακας ως $key=>$value)
της ομάδας;
Λοιπόν, αμέσως ένα παράδειγμα εργασίας

// δημιουργήστε έναν πίνακα με το διάσημο IT
$names["Ritchie"] = "Dennis";
$names["Thompson"] = "Ken";
$names["Gates"] = "Bill";
$names["Jobs"] = "Steve";

Foreach ($names ως $key => $value) (
echo "$value $key";
}
?>
Το σενάριο θα εμφανιστεί στην οθόνη

Ντένις Ρίτσι
Κεν Τόμσον
Μπιλ Γκέϊτς
Ο Steve Jobs
μετρώ- μια συνάρτηση που επιστρέφει τον αριθμό των στοιχείων στον πίνακα.

Πλήθος ηχούς ($names); // στο παράδειγμά μας με το IT θα επιστρέψει την τιμή 4
Είδος- μια συνάρτηση που ταξινομεί στοιχεία πίνακα. Βολικό για αριθμητικές τιμές ευρετηρίου.
Arsort- μια συνάρτηση που ταξινομεί στοιχεία πίνακα με αντίστροφη σειρά.

Ταξινόμηση($names); // ταξινομεί με σειρά. Είναι βολικό αν υπάρχουν αριθμοί στο Ευρετήριο
arsort($names); // ταξινόμηση με αντίστροφη σειρά. Δηλαδή, κατά δείκτες τα στοιχεία θα είναι με τη σειρά 3, 2, 1, 0
Καταργήθηκε η ρύθμιση- μια συνάρτηση που αφαιρεί ένα στοιχείο πίνακα.

Unset($array); // αφαίρεση στοιχείου πίνακα με δείκτη 2
unset($array); // διαγραφή ολόκληρου του πίνακα
Πίνακας_αναζήτησης- λειτουργία αναζήτησης σε έναν πίνακα. Έχει δύο επιχειρήματα. Με απλά λόγια, έχει array_search("what", where)

$animals="σκύλος";
$animals="cat";
$animals="bird";
echo array_search("cat",$animals); // θα εμφανίσει το ευρετήριο του στοιχείου - αριθμός 2
Ανάμιξη- μια συνάρτηση που ανακατεύει τα πλήκτρα των τιμών του πίνακα.

Shuffle($animals); // τακτοποιήστε τα στοιχεία σε τυχαία σειρά
Σας ευχαριστώ για την προσοχή σας!

Ας υποθέσουμε ότι έχετε μια ιδέα για έναν πίνακα PHP. Η εργασία με πίνακες χωρίς ενσωματωμένες λειτουργίες είναι δύσκολη. Μπορείτε να περιγράψετε μια λειτουργία για μια συγκεκριμένη εργασία. Μπορείτε να αφιερώσετε αρκετές ώρες γράφοντας τις λειτουργίες σας. Αυτός είναι ένας κακός τρόπος. Σας προτείνω να διαβάσετε το εγχειρίδιο στο php.net. Έγραψα αρκετές συναρτήσεις και μετά από λίγο ανακάλυψα αναλόγους στο php.net. Για παράδειγμα Η αναζήτηση για ένα στοιχείο σε έναν πίνακα μπορεί να γίνει εύκολα από τη συνάρτηση array_search().

//array_search() $array = array("name" => "Egor", "site" => "training.web", "description" => "php training"); $key = array_search("training.web", $array); echo $key; // ιστοσελίδα

Λειτουργία Η in_array() επιστρέφει TRUE εάν το στοιχείο βρίσκεται στον πίνακα. Ο πίνακας μπορεί να ανακατευτεί τυχαία χρησιμοποιώντας τη συνάρτηση shuffle(). Εάν χρειάζεται να εμφανίσετε εισαγωγικά σε έναν ιστότοπο, χρησιμοποιήστε αυτήν τη λειτουργία. Συχνά χρησιμοποιείται η αντίστροφη σειρά. Η συνάρτηση array_reverse() θα σας βοηθήσει να αντιστρέψετε τα στοιχεία ενός πίνακα.

//in_array() $lang = array("PHP", "RUBY", "HTML", "CSS"); if (in_array("PHP", $lang)) ( echo "Βρέθηκε PHP"; ) //shuffle() $numbers = range(1, 10); var_dump($numbers); //array(10) shuffle($numbers); print_r($numbers); //Πίνακας ( => 8 => 4 => 9 => 6 => 5 // => 7 => 1 => 2 => 10 => 3) $numbers = range(1, 10); //array_reverse() $numbers = array_reverse($numbers); print_r($numbers); //Πίνακας ( => 10 => 9 => 8 => 7 => 6 // => 5 => 4 => 3 => 2 => 1)

Η πιο συχνά χρησιμοποιούμενη συνάρτηση είναι η count(). Μετρά τον αριθμό των στοιχείων σε έναν πίνακα. Η συνάρτηση sizeof() έχει καταργηθεί. Μερικές φορές χρειάζεται να μετρήσετε τον αριθμό των πανομοιότυπων στοιχείων σε έναν πίνακα. Η συνάρτηση array_count_values() θα βοηθήσει. Μπορείτε να γεμίσετε έναν πίνακα με πολλά στοιχεία και στη συνέχεια να χρησιμοποιήσετε αυτήν τη συνάρτηση. Αν περιγράψεις μια λειτουργία, θα χάσεις πολύ χρόνο. Η συνάρτηση εντοπισμού σφαλμάτων print_r() χρησιμοποιείται πολύ συχνά. Εξάγει ολόκληρο τον πίνακα, ανεξάρτητα από το πόσο μεγάλος και πολύπλοκος είναι. Για να λάβετε το τελευταίο στοιχείο του πίνακα, χρησιμοποιήστε τον ακόλουθο κώδικα: $numbers[ count($numbers) - 1 ]. Μπορείτε επίσης να χρησιμοποιήσετε τη συνάρτηση end().

//count() $numbers = range(1, 10); $count = count($numbers); for($i=0; $i 3 => 2 => 1)

Η συνάρτηση implode() χρησιμοποιείται πολύ συχνά. Αυτή συνενώνει στοιχεία πίνακα σε μια συμβολοσειρά. Εάν χρησιμοποιείτε τον δικό σας οριοθέτη, τότε μπορείτε να χωρίσετε τον πίνακα και να συλλέξετε τα στοιχεία σε μια συμβολοσειρά. Μπορείτε να βάλετε μια δεξιά κάθετο "/" μεταξύ των στοιχείων του πίνακα. Μπορείτε να προσθέσετε μια γραμμή όπως αυτή στο τέλος της διεύθυνσης URL. Εάν έχετε μια συμβολοσειρά παρόμοια με μια διεύθυνση url τότε για να χωρίσετε μια συμβολοσειρά χρησιμοποιήστε τη συνάρτηση explode().. Διαβάστε για τη συνάρτηση explode στο άρθρο Πώς να χωρίσετε μια συμβολοσειρά σε έναν πίνακα explode() PHP. Με οριοθέτη, τα στοιχεία συμβολοσειράς μιας σειράς μετατρέπονται σε στοιχεία πίνακα. Με μια λέξη, ο τύπος δεδομένων συμβολοσειράς μετατρέπεται σε πίνακα.

Ru/egor/lesons //explode() $url = "trainingweb.ru/egor/lesons"; $arr = explode("/", $url); print_r($arr); //Array ( => trainingweb.ru => egor => μαθήματα)

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

//array_map() $numbers = range(1, 10); συνάρτηση plusOne($num) ( $num += 1; return $num; ) $arr = array_map("plusOne", $numbers); print_r($arr); //Πίνακας ( => 2 => 3 => 4 => 5 => 6 // => 7 => 8 => 9 => 10 => 11)

Συμβαίνει ότι πρέπει να ρίξετε μια συμβολοσειρά σε έναν πίνακα. Αυτό γίνεται απλά χρησιμοποιώντας τη συνάρτηση (πίνακας). Θα φτιάξω 2 μεταβλητές συμβολοσειράς. Στη συνέχεια θα μετατρέψω τις μεταβλητές σε πίνακες και θα συνδυάσω τους πίνακες σε έναν πίνακα. Για να συνδυάσετε πίνακες σε έναν κοινό πίνακα, η συνάρτηση array_merge() είναι κατάλληλη. Μπορείτε να συνδυάσετε πολλούς πίνακες σε έναν πίνακα: array_merge($arr1, $arr2, $arr3, ...,).

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

Αρχικά, ας δούμε την απλούστερη συνάρτηση που ελέγχει εάν ένα στοιχείο βρίσκεται σε έναν πίνακα. Η συνάρτηση καλείται in_array():

$arr = array("Num", "Str", "Int");
if (in_array("Str", $arr)) echo "Το στοιχείο βρέθηκε";
?>

Όπως φαίνεται από το παράδειγμα, αυτή η συνάρτηση ελέγχει την παρουσία της πρώτης παραμέτρου μεταξύ των τιμών του πίνακα που καθορίζονται από τη δεύτερη παράμετρο. Και επιστρέφει αληθής, εάν βρεθεί το στοιχείο ή ψευδής, αν δεν βρεθεί. Οι ιδιαίτερα προχωρημένοι θα ρωτήσουν: «Αλλά τι γίνεται με τέτοια πράγματα όπως 0 Και ψευδής, επειδή αυτές είναι διαφορετικές τιμές, αλλά η PHP τις θεωρεί ίδιες ". Για αυτό, στο συναρτήσεις in_array()Υπάρχει και μια τρίτη παράμετρος, προαιρετική, που αν έχει τιμή αληθής, τότε η συνάρτηση ελέγχει όχι μόνο τις τιμές, αλλά και τους τύπους:

$arr = array(0, "Str", "Int");
if (in_array(false, $arr, true)) echo "Το στοιχείο βρέθηκε";
else echo "Το στοιχείο δεν βρέθηκε"?
?>

Ένα άλλο πολύ χρήσιμο χαρακτηριστικό είναι array_unique()που παίρνει έναν πίνακα και επιστρέφει έναν πίνακα χωρίς διπλότυπες τιμές:

$arr = πίνακας(3, 5, "Val", 3, "Val", 7);
$arr_uniq = array_unique($arr);
print_r($arr_uniq);
?>

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

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

$arr_2 = array_slice($arr, 3);
print_r($arr_2);
?>

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

$arr = array(12, 10, 15, "Name", "Some", -0.5);
$arr_2 = array_slice($arr, 3, 2);
print_r($arr_2);
?>

Ως αποτέλεσμα, θα δείτε: " Πίνακας ( => Όνομα => Μερικά)".

Τώρα ας προχωρήσουμε στην τελευταία ομάδα συναρτήσεων - συναρτήσεις ταξινόμησης πίνακα. Αλλά πρώτα, επιτρέψτε μου να σας υπενθυμίσω τη διαφορά μεταξύ λιστών και συσχετιστικών πινάκων. Λίσταείναι ένας πίνακας του οποίου οι δείκτες είναι αριθμοί που ταξινομούνται με αύξουσα σειρά, ξεκινώντας από 0 . ΕΝΑ συσχετικός πίνακαςείναι ένας πίνακας του οποίου τα ευρετήρια είναι, γενικά, συμβολοσειρές που ονομάζονται κλειδιά. Γιατί είναι τόσο σημαντικό κατά την ταξινόμηση; Εάν ταξινομείτε μια λίστα, τότε δεν είναι καθόλου σημαντικό για εσάς να αποθηκευτεί ο σύνδεσμος: " κλειδί - τιμή", δεδομένου ότι τα ευρετήρια δεν χρησιμεύουν για τον προσδιορισμό μιας τιμής, αλλά χρησιμεύουν μόνο για την πρόσβαση σε αυτήν. Και σε έναν συσχετιστικό πίνακα, είναι η σύνδεση που είναι υψίστης σημασίας: " κλειδί-τιμή», επομένως είναι απαραίτητο να διατηρηθεί κατά τη διαλογή.

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

$arr = πίνακας(15, 12, "String", 40, -2, 0, 12);
sort($arr);
print_r($arr);
ηχώ "
";
rsort($arr);
print_r($arr);
?>

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

Τώρα ας προχωρήσουμε στο συναρτήσεις για ταξινόμηση συσχετιστικών πινάκων: asort()Και arsort(). Κάνουν τα πάντα το ίδιο, αλλά η σύνδεση» κλειδί-τιμή" αποθηκεύεται:

$arr = array("Name" => "Tommy", "Age" => "34", "Level" => "15");
asort($arr);
print_r($arr);
ηχώ "
";
arsort($arr);
print_r($arr);
?>

Τώρα ας ρίξουμε μια ματιά συναρτήσεις για ταξινόμηση κατά πλήκτρα συσχετιστικών πινάκων: ksort()Και krsort():

$arr = array("Name" => "Tommy", "Age" => "34", "Level" => "15");
ksort($arr);
print_r($arr);
ηχώ "
";
krsort($arr);
print_r($arr);
?>

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

Και τέλος, ας αναλογιστούμε προσαρμοσμένες λειτουργίες ταξινόμησης: uasort()Και uksort(). Και οι δύο συναρτήσεις λαμβάνουν δύο παραμέτρους: έναν πίνακα και προσαρμοσμένη λειτουργία ταξινόμησης. Η συνάρτηση ταξινομεί τον πίνακα κατά τιμές και συνάρτηση uksort().ταξινομεί τον πίνακα κατά πλήκτρα. Ως παράδειγμα, εξετάστε το ακόλουθο σενάριο:

συνάρτηση cmp($x, $y) (
αν ($x == $y) επιστρέψει 0;
αν ($x == 1) επιστρέψει 1;
αν ($y == 1) επιστρέψει -1;
αν ($x > $y) επιστρέψει 1;
αλλιώς επιστροφή -1;
}
$arr = array("A" => 1, "C" => 3, "B" => 2);
uasort($arr, "cmp");
print_r($arr);
ηχώ "
";
uksort($arr, "cmp");
print_r($arr);
?>

Όπως μπορείτε να δείτε, έχουμε γράψει τους δικούς μας κανόνες ταξινόμησης, σύμφωνα με τους οποίους ο αριθμός " 1 "είναι πάντα μεγαλύτερη από οποιαδήποτε άλλη τιμή. Εάν κανένας από τους αριθμούς δεν είναι " 1 », τότε συγκρίνουμε σύμφωνα με τους συνήθεις κανόνες. PHPταξινομεί τον πίνακα μας σύμφωνα με τους κανόνες που περιγράφονται στη συνάρτηση σύγκρισης, το όνομα της οποίας περάσαμε στις συναρτήσεις uasort()Και uksort().

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

Με έκανε να δώσω ξανά ιδιαίτερη προσοχή στους πίνακες.

Θα προσπαθήσω να δώσω μια σύντομη επισκόπηση της επικοινωνίας με πίνακες.

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

$προσωπικό; // πρόσβαση σε ένα κελί ενός συνηθισμένου πίνακα.

$personal["vova"]; // πρόσβαση σε ένα κελί ενός συσχετιστικού πίνακα.

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

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

Ένας πίνακας μπορεί να αποθηκεύσει οποιαδήποτε πληροφορία - από απλούς αριθμούς έως πολύπλοκες δομές.

Η δήλωση ενός πίνακα είναι απλή:

var $array1 = array(); // κενός πίνακας

Var $array2 = array("vova", "nina", "olga"); // πίνακας με δεδομένα

Έτσι δηλώνεται ένας συνηθισμένος πίνακας. Εάν πρέπει να δηλώσουμε έναν συσχετιστικό πίνακα με δεδομένα ή έναν πίνακα στον οποίο τα δεδομένα είναι «διασπορά» σε κελιά μακριά το ένα από το άλλο, πρέπει να καθορίσουμε, εκτός από τις τιμές των κελιών, το κλειδί τους (όνομα). Το κλειδί διαχωρίζεται από τα δεδομένα με τον συνδυασμό "=>".

var $array3 = array(0 => "vova", 11 => "nina", 543 => "olga");
var $array4 = array("sorokin" => "vova", "bulgakova" => "nina", "zhezlova" => "olga");

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

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

echo $array4["sorokin"];

Γενικά, αυτό είναι το μόνο που είναι σημαντικό να γνωρίζετε για τη δήλωση πινάκων.

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

Πώς να ελέγξετε την ύπαρξη ενός πίνακα;

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

if(!isset($array_name)) echo "Δεν υπάρχει τέτοιος πίνακας!";

Πώς να καταστρέψετε μια συστοιχία;

unset($array_name);

ή ένα από τα κελιά του:

unset($array_name[n]);

Ποιος είναι ο ευκολότερος τρόπος για να εκτυπώσετε τα περιεχόμενα ενός πίνακα;

echo implode(",",$array_name);

Οπου εκρήγνυνται-- λειτουργία συνδυασμού με διαχωριστικό.

Σε αυτήν την περίπτωση, ο πίνακας λειτουργεί ως λίστα μεταβλητών.

Τι γίνεται αν χρειαστεί να δημιουργήσετε έναν πίνακα για μία λειτουργία;

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

$str="ένα, δύο, τρία";
$list($one, $two,$three)=explode(",",$srt);

Τώρα κάθε μεταβλητή περιέχει τη δική της λέξη.

Και εκτυπώστε:

echo implode(",",list($one, $two, $tree));

Μπορείτε, φυσικά, απλώς να επαναλάβετε τα περιεχόμενα του πίνακα σε έναν βρόχο:

ενώ ($i

Πώς να αλλάξετε το μέγεθος ενός πίνακα;

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

Αλλά αν θέλετε να κόψετε έναν πίνακα ή να κόψετε ένα συγκεκριμένο κομμάτι από έναν πίνακα, μπορείτε να χρησιμοποιήσετε τη συνάρτηση array_splice().

Πώς να εκτελέσετε μια λειτουργία σε κάθε στοιχείο ενός πίνακα;

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

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

Για παράδειγμα,

συνάρτηση print_arr($str)
{
echo $str,"
\n";
$str.=" - έγινε";
}

Εκτυπώνει όλα τα στοιχεία του πίνακα $arr;

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

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

συνάρτηση print_arr(&$str)
{
echo $str,"
\n";
$str.=" - έγινε";
}

$arr=array("ένα","δύο","τρία");

Array_walk($arr,"print_arr");
ηχώ "

\n";
array_walk($arr,"print_arr");

Και το αποτέλεσμα έχει ως εξής:

ένα δύο τρία ένα - έγινε δύο - έγινε τρία - έγινε

Αυτή είναι μια χρήσιμη δυνατότητα που χρησιμοποιείται σπάνια.

Πώς να αφαιρέσετε τα διπλότυπα από έναν πίνακα;

Πολύ απλό. Υπάρχει μια συνάρτηση που ονομάζεται array_unique για αυτό, η οποία θα σας επιστρέψει έναν πίνακα, μειώνοντάς τον σε έναν πίνακα που δεν περιέχει την επανάληψη.

Πώς να συγκρίνετε δύο πίνακες;

Και εδώ η PHP μας κάνει να βαριόμαστε, γιατί η συνάρτηση array_dif θα κάνει τα πάντα για εμάς.

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

$result = array_diff($array1, $array2,$array3,:);

Πώς να συνδυάσετε πίνακες;

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

Για να είμαστε δίκαιοι, οι μονοδιάστατοι πίνακες στην PHP μπορούν να «στοιβαστούν» με το συνηθισμένο συν:

$array3=$array1+$array2;

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

Αν χρειαστεί, ενοποίηση Ολοιστοιχεία πίνακα, συμπεριλαμβανομένων των επαναλαμβανόμενων, μπορείτε να χρησιμοποιήσετε τη συνάρτηση array_merge_recursive.

* * *
Θα σταματήσουμε εδώ σήμερα και θα συνεχίσουμε αύριο. Παίξτε με συστοιχίες, είναι πραγματικά ενδιαφέρον!

Αυτό το τεύχος ετοιμάστηκε βλέποντας το βιβλίο του Hughes Sterling "