La programmation est la syntaxe et la sémantique.Le premier est déterminé par les règles du langage, le second - par l'expérience du développeur. Concernant les tableaux, le développeur peut objectivement charger la syntaxe avec la sémantique. Ce n'est pas un objet, mais pas un tableau au sens traditionnel. PHP permet de créer des tableaux de variables de différents types, y compris eux-mêmes. Un élément d'un tableau peut être une fonction, c'est-à-dire la capacité de charger un tableau avec un algorithme réel, une signification réelle.
La syntaxe est stable, mais varie d'une version àet ne sont pas toujours compatibles, même de bas en haut. La portabilité des logiciels est une réalisation bien oubliée du siècle dernier. La sémantique se développe et peut toujours être appliquée non seulement dans n'importe quelle version de n'importe quelle langue; c'est devenu une tradition d'utiliser des constructions syntaxiques pour exprimer ce que les règles de langage ne prévoyaient même pas. En utilisant des tableaux comme exemple, cela peut être plus facilement compris.
Conception de la baie
Un tableau en PHP a une syntaxe et des fonctionnalités pratiques. Ce type de données peut être décrit à l'avance, mais il est souvent pratique de créer des tableaux à la volée selon les besoins.
public $ aNone = array (); // le tableau est décrit et ne contient rien
public $ aFact = array ("avocat", "pêche", "cerise"); // il y a trois éléments dans ce tableau
Création d'un tableau en cours de vérification d'une condition:
$ cSrcLine = "ligne de données analysée";
pour ($ i = 0; $ i <13; $ i ++) {
$ cUserLine = inputUserLine (); // entrez quelque chose
if (checkFunc ($ cSrcLine, $ cUserLine) {
$ aResult [] = "Oui"; // ajouter au tableau PHP
} autre {
$ aResult [] = "Non";
}
}
Suite à l'exécution de cet exemple,un tableau de 13 éléments, dont les valeurs seront uniquement "Oui" ou "Non". Les éléments recevront des indices de 0 à 12. Le même effet peut être obtenu en écrivant au préalable le "futur" tableau PHP dans une chaîne:
$ cFutureArray = "";
pour ($ i = 0; $ i <13; $ i ++) {
$ cUserLine = inputUserLine (); // entrez quelque chose
if ($ i> 0) {$ cFutureArray. = "|"; }
if (checkFunc ($ cSrcLine, $ cUserLine) {$ cFutureArray. = "Oui";
} else {$ cFutureArray. = "Non"; }
}
$ aResult = exploser ("|", $ cFutureArray);
Tableaux multidimensionnels
De nombreux systèmes de gestion de site (SMS)utiliser massivement des tableaux. D'une part, c'est une bonne pratique, d'autre part, cela rend l'application difficile. Même si l'auteur comprend la doctrine PHP-array-in-array, il ne faut pas en abuser: non seulement le développeur devra s'habituer à une notation complexe. Souvent, après un certain temps, le créateur lui-même se souviendra longtemps de ce qu'il a écrit au début:
tableau de retour (
"view_manager" => tableau (41, "template_path_stack" => tableau (__DIR__. "/../view",),
"router" => array ("routes" => array ("sayhello" => array (
"type" => "ZendMvcRouterHttpLiteral",
"options" => array ("route" => "/ sayhello", "defaults" => array (
"controller" => "HelloworldControllerIndex", "action" => "index",))))),
"controllers" => array ("invokables" => array (
"HelloworldControllerIndex" => "HelloworldControllerIndexController"))
)
Voici l'exemple de PHP Array in Array par ZF2. Pas très inspirant au début, mais cela fonctionne et fait probablement de ce framework un succès (exemple de ZendSkeletonApplication / module / Helloworld / config / module.config.php module).
Array est une construction de données importante pendantdesign et développement. Sa version multidimensionnelle était autrefois populaire, mais au fil du temps, il reste un besoin de tableaux de deux ou trois dimensions maximum. C'est plus simple et plus compréhensible, mais d'un point de vue professionnel, quand quelque chose commence à se multiplier, cela signifie que quelque chose ne va pas dans l'énoncé du problème ou dans le code.
Simple, accessible et compréhensible
Lors de la création en php, un tableau dans un tableau est préférableêtre limité à deux ou trois niveaux. Malgré la stabilité et la fiabilité, PHP fait des erreurs lors du traitement de la syntaxe. Vous pouvez supporter cela, avoir un bon éditeur de code, habitué à compter avec précision les crochets et les virgules. Cependant, PHP ne contrôle pas les types de données (c'est le karma de la programmation moderne) et permet au développeur de pratiquer les erreurs sémantiques.
Une règle pour contrôler les types de variables, ouLes propres idées de transformer la sémantique en syntaxe sont souvent un luxe inacceptable. Il s'agit d'une perte de vitesse de script, de lisibilité du code, ... par conséquent, la facilité de codage est toujours essentielle.
PHP présente un inconvénient majeur: en cas d'incertitude, le script se bloque simplement. Tous les débogueurs ne gèrent pas les imprévus, et beaucoup dépend de l'expérience et de l'intuition du développeur. Plus l'algorithme est simple, plus les informations structurées sont accessibles, plus il y a de chances de trouver une erreur ou de ne pas l'admettre du tout.
Il est caractéristique que lorsque les premiers tableaux sont apparus,des variantes de données sous forme de structures ont été proposées - une tentative maladroite de créer quelque chose à partir de différents types de données. Les premiers ont survécu et ont acquis une nouvelle syntaxe efficace, tandis que les seconds sont de l'histoire.
Tableaux simples et associatifs
L'écriture d'un tableau 2D est une autre pairecrochets "[" et "]", par exemple: $ aSrcData [1] [2] signifie faire référence à l'élément [2] du tableau [1] inclus dans le tableau $ aSrcData. Il n'y a aucune obligation en PHP de déclarer les données à l'avance. Toute information déclarée peut toujours être vérifiée pour l'existence.
Il est très efficace de créer quelque chose uniquement siquand il est nécessaire, sous la forme dans laquelle il était requis, et à détruire lorsque le besoin en a disparu. En utilisant des noms sensibles comme clés (indices), vous pouvez obtenir des constructions lisibles qui sont significatives dans le contexte de l'emplacement actuel dans l'algorithme:
$ aAnketa ["nom"] = "Ivanov";
$ aAnketa ["âge"] = 42;
$ aAnketa ["work"] = "Directeur";
$ aAnketa ["actif"] = vrai;
$ aTable [] = $ aAnketa;
$ aAnketa ["name"] = "Petrov";
$ aAnketa ["âge"] = 34;
$ aAnketa ["work"] = "Manager";
$ aAnketa ["actif"] = vrai;
$ aTable [] = $ aAnketa;
$ aAnketa ["name"] = "Afanasiev";
$ aAnketa ["âge"] = 28;
$ aAnketa ["work"] = "Travailleur";
$ aAnketa ["actif"] = faux;
$ aTable [] = $ aAnketa;
$ sOne. = imploser (";", $ aTable [1]). "<br/>"; // deuxième tableau PHP en chaîne
$ sOne. = $ aTable [1] ["travail"]; // accès à un élément du deuxième tableau
Le résultat de cet exemple (le premier tableau est normal, les clés qu'il contient commencent à 0, le second tableau est associatif, il a quatre clés: "name", "age", "work", "active"):
$ sOne = "Petrov; 34; Manager; 1 <br/> Manager";
Dans cet exemple simple, vous pouvez voir commentle profil créé peut être appliqué à tous les employés. Vous pouvez créer un tableau d'employés avec des index par matricule et, si vous avez besoin d'un employé spécifique, le sélectionner par matricule.
Si l'organisation a des départements, ou s'il y ales travailleurs saisonniers, ou besoin de séparer les retraités actifs ... le tableau PHP dans la construction de tableau est très pratique, mais vous ne devriez jamais vous laisser emporter par la dimensionnalité. Deux ou trois dimensions sont la limite d'une solution efficace.
Touches pour travailler avec des tableaux
Si avant cela importait comment tout fonctionnait, alorsCes dernières années, les traditions de l'ère binaire, où un programmeur voulait savoir exactement comment les éléments d'un tableau sont stockés, et voulait y avoir un accès direct, ont été complètement oubliées. Il existe de nombreux encodages de caractères qui occupent plus d'un octet en mémoire. Le mot «bit» ne peut être trouvé maintenant que dans les opérations de recherche de bits, mais la recherche dans un tableau PHP est un sujet distinct. L'accès aux éléments peut être simple et associatif. Dans le premier cas, les éléments du tableau (ayant l'un des types disponibles en PHP) sont numérotés 0, 1, 2, ... Dans le second cas, le programmeur spécifie son propre index, plus souvent appelé la "clé" pour accéder à la valeur souhaitée.
$ aLine ["fruit"] = "orange"; // ici PHP array key = "fruit"
ou (pour que tout soit correct, en observant l'encodage de la page et du code):
$ aLine [iconv ("utf-8", "CP1251", "fruit")] = iconv ("utf-8", "CP1251", "orange");
Lors de l'ajout d'une nouvelle valeur au tableau $ aLine:
$ aLine [] = iconv ("utf-8", "CP1251", "pêche");
$ aLine [iconv ("utf-8", "CP1251", "légume")] = iconv ("utf-8", "CP1251", "concombre");
$ aLine [] = iconv ("utf-8", "CP1251", "aubergine");
à la suite de l'exécution de la boucle:
foreach ($ aLine as $ ck => $ cv) {
$ cOne. = $ ck. "=". $ cv. "<br/>";
}
recevra:
fruit = orange
0 = pêche
légume = concombre
1 = aubergine
La clé PHP du tableau lors de l'ajout des éléments "pêche" et "aubergine" est formée séquentiellement à partir de 0, et lors de la spécification de sa valeur sera égale à cette valeur.
Supprimer des éléments d'un tableau
Le moyen le plus simple est de supprimer un élément d'un tableau PHP pendantle traiter. Dans ce cas, par exemple, suite à une exécution en boucle, le tableau d'origine est balayé et un nouveau est formé, dans lequel les éléments inutiles ne sont simplement pas écrits.
Vous pouvez le faire plus facilement. Si nous appliquons au dernier exemple:
unset ($ aLine [0]); // supprimer l'élément du tableau PHP
alors le résultat sera:
fruit = orange
légume = concombre
1 = aubergine
Options de manipulation des éléments de tableaubeaucoup peuvent être construits. Par exemple, en utilisant les fonctions implode () et explode (), vous pouvez écrire un tableau PHP dans une chaîne avec un délimiteur, et l'analyser dans un autre tableau avec un délimiteur différent.
Pour supprimer simplement un tableau entier en PHP, écrivez simplement: unset ($ aLine);
C'est assez.
Rechercher dans un tableau
PHP contient des fonctions de recherche spécialesarray_keys (), array_values (), array_key_exists () et in_array (), cependant, avant de décider de les utiliser, vous devriez envisager de faire une recherche de tableau PHP vous-même.
Tout projet a un domaine spécifique,des tableaux construits, en particulier lorsqu'une partie de la sémantique a été transférée à la syntaxe et représentée par un ensemble de clés significatives très spécifiques. Cela vous permet d'exécuter vos propres fonctions de recherche, qui peuvent également être étiquetées de manière significative.
En PHP, vous pouvez appeler des fonctions dont les noms sont déterminés lors de l'exécution du programme. Un exemple très pratique de la bibliothèque PHPWord qui vous permet de lire et de créer des documents MS Word:
$ elements = array ("Text", "Inline", "TextRun", "Link", "PreserveText", "TextBreak",
"ListItem", "ListItemRun", "Table", "Image", "Object", "Footnote",
"Endnote", "CheckBox", "TextBox", "Field", "Line");
$ fonctions = tableau ();
pour ($ i = 0; $ i <count ($ elements); $ i ++) {
$ functions [$ i] = "ajouter". $ éléments [$ i];
}
En conséquence, le tableau $ functions recevra les valeurs du tableau $ elements, c'est-à-dire les noms des fonctions réelles qui effectuent un travail avec des éléments réels du document.
En appelant $ functions [4] pour $ elements [4], vous pouvez obtenir une recherche parfaite et des résultats rapides.
Trier les articles
La tâche de trier les données est essentielle, etPHP propose plusieurs fonctions pour cela: sort (), rsort (), asort (), ksort (), ... Eléments ascendants et descendants, les deux secondes fonctions préservent la relation entre les clés et les valeurs. Parfois, il est judicieux de mélanger les valeurs d'un tableau au hasard - shuffle ().
Lorsque vous utilisez des fonctions PHP pour trier, neoubliez que les éléments peuvent avoir non seulement des types différents, mais aussi un contenu pas entièrement naturel. Tout d'abord, vous devez faire très attention au tri des chaînes contenant des lettres russes, au tri des dates, ainsi qu'aux nombres écrits dans différents formats.
La meilleure façon d'écrire vous-même la solution parfaite, au moins pendant la phase de test du script, est de trier manuellement. Elle aidera à anticiper les situations imprévues.
Baies en ligne
Grâce aux fonctions implode () et explode (), le tableaupeut être facilement transformé en une chaîne et reçu en retour. Cela vous permet de stocker des données sous une forme compacte et de les développer dans un état pratique si nécessaire.
Un tableau transformé en chaîne ouvre de nouvelles possibilités. Par exemple, la tâche de recherche de mots-clés dans le texte nécessite que le trouvé ne soit pas ajouté à nouveau.
$ cSrcLine = "Texte Texte ListItemRun TextBox ListItem TextBox Case à cocher CheckBox TextBox Footnote";
$ aSrc = exploser ("", $ cSrcLine);
$ cDstLine = "";
pour ($ i = 0; $ i <count ($ aSrc); $ i ++) {
$ cFind = "[". $ aSrc [$ i]. "]";
if (! is_integer (strpos ($ cDstLine, $ cFind))) {
$ cDstLine. = $ cFind;
}
}
$ aDst = exploser ("] [", $ cDstLine);
$ cOne = imploser (";", $ aDst);
Par conséquent, la variable $ cOne recevra uniquement les valeurs de la chaîne d'origine qui s'y produisent une fois: "Text; ListItemRun; TextBox; ListItem; Check; Box; CheckBox; Footnote".
La langue russe dans les clés et les valeurs
Il n'est pas recommandé d'utiliser quoi que ce soit liéavec des encodages nationaux, dans des constructions syntaxiques. La langue russe, comme toutes les autres langues dont les caractères vont au-delà de a-z, ne créera pas de problèmes, étant dans la zone de données, mais pas dans la syntaxe du code. Parfois, même une simple tâche PHP «pour imprimer un tableau sur une imprimante ou sur un écran» conduira à «krakozyabra», et le plus souvent, elle arrêtera simplement le script.
PHP est un langage fidèle et tolérantcodages nationaux, mais il existe de nombreuses situations où la quantité de travail achevée doit être répétée uniquement parce qu'au bon endroit et au bon moment une valeur clé apparaît, qu'il ne sera pas possible de reconnaître.
Syntaxe PHP et environnement de langage
Il ne faut pas oublier que la syntaxe PHP est une chose, maisles constructions de cette syntaxe "traitent" d'autres applications, avec le système d'exploitation, avec des options matérielles. Il existe de nombreuses options, il n'est jamais possible de tout prévoir.
La règle «dans le code il n'y a que le code, mais à l'entrée,à l'intérieur, et à la sortie il y a toutes les informations »aidera à éviter les surprises inattendues. La valeur PHP dans le tableau peut être "russe", mais la clé doit être syntaxiquement correcte non seulement du point de vue de la langue donnée, mais aussi du point de vue de son environnement.