Points de base
array_change_key_case()
, array_chunk()
, array_column()
, array_combine()
, array_count_values()
, array_diff()
, array_fill()
, array_filter()
, array_flip()
, array_intersect()
, array_key_exists()
, array_keys()
, array_map()
, array_merge()
, array_multisort()
, array_pad()
, array_pop()
, array_push()
, array_rand()
array_reduce()
, array_reverse()
, array_search()
, array_shift()
, array_slice()
, array_splice()
, array_sum()
, array_unique()
, array_unshift()
, array_values()
, array_walk()
, array_rand()
, in_array()
, array_search()
, et ainsi de suite. array_slice()
Renvoie un ensemble aléatoire de clés à partir du tableau d'origine. Cette fonction est conçue pour renvoyer les touches plutôt que des valeurs, elle fonctionne donc aussi efficacement que les tableaux imbriqués et les tableaux à couche unique. Si vous connaissez la clé, vous pouvez obtenir la valeur. substr()
La fonction explode()
. Renvoie une copie d'une partie des éléments du tableau, qui fonctionne de manière très similaire à la fonction
sur une chaîne. Cette fonction ne supprime pas les tranches du tableau d'origine.La fonction PHP prend une valeur de chaîne et la divise en deux parties à l'aide du séparateur spécifié. Il renvoie ensuite un tableau contenant autant d'éléments que le nombre de pièces. Cette fonction peut être utilisée pour n'importe quel caractère ou séquence de caractères.
Dans mon article précédent sur les tableaux PHP, j'ai suggéré un contenu de table qui peut être représenté sous forme de tableaux. Dans cet article, j'utiliserai un jeu de cartes à jouer pour explorer certaines des fonctions de tableau intégrées dont les programmeurs PHP ont le plus souvent besoin. Pour mettre en évidence certaines des fonctions de traitement de la table fournie par PHP, j'utiliserai certains composants de Buraco - un jeu très populaire dans ma ville natale et qui est très similaire à Rami. Le vrai Buraco joue avec deux decks (104 cartes) plus deux cartes de clown. Il a également une pile de deck qui stocke toutes les cartes non données au joueur, mais je ne les utilise pas ici, donc vous n'avez pas à vous en soucier. signifie un jeu de cartes à jouerLes cartes à jouer peuvent remonter au 9ème siècle, lorsque le papier a commencé à être utilisé en Chine. Ils suivent d'autres inventions de l'est au monde arabe, puis vers l'Europe et vers le nouveau monde. Dans sa forme la plus populaire, le deck français, un jeu de cartes à jouer a 52 cartes, divisé en quatre costumes: Plum (♣), Block (♦), Heart (♥) et Spades (♠). Chaque costume a 13 cartes ou cartes: A, 2, 3, 4, 5, 6, 7, 8, 9, 10, J, Q et K. Vous pouvez écrire un tableau pour enregistrer des costumes et des cartes comme suit:
$suits = array("clubs", "diamonds", "hearts", "spades"); $faces = array(1 => "A", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12", "13");
Les deux sont des tableaux d'index numériques - c'est-à-dire qu'ils ont des clés basées sur des entiers. Étant donné que je n'ai pas explicitement donné des clés lors de la définition de $suits
, PHP attribue automatiquement les clés à leur en commençant à 0. Par conséquent, la valeur de $suits[0]
est des "clubs" et la valeur de $suits[3]
est "Spades". Cependant, je fournis une clé pour le premier élément de $faces
. PHP attribue chaque nouvelle clé en obtenant l'index entier maximum et en l'ajout 1. $faces[1]
est "a", $faces[2]
est "02", $faces[3]
est "03", et ainsi de suite. Vous remarquerez que je force PHP à indexer $faces
à partir de 1, donc la carte numérique est la même que leurs clés respectives. Vous pouvez utiliser deux boucles foreach
pour créer un tableau principal des 52 cartes, chacune représentée comme une chaîne au format Face | Suit , comme indiqué ci-dessous:
$deck = array(); foreach ($suits as $suit) { foreach ($faces as $face) { $deck[] = $face . "|" . $suit; } }
Le résultat du code ci-dessus est le même que si vous remplissez manuellement $deck
:
$deck = array("A|clubs", "02|clubs", "03|clubs", "04|clubs", ... "Q|spades", "K|spades");
Certains lecteurs expérimentés peuvent demander pourquoi ne pas utiliser des tableaux imbriqués au lieu des chaînes, par exemple:
$deck = array(); $deck["A"] = array("clubs", "diamonds", "hearts", "spades"); $deck["02"] = array("clubs", "diamonds", "hearts", "spades"); $deck["03"] = array("clubs", "diamonds", "hearts", "spades"); ...
D'accord, c'est ce qu'il est bon: les chaînes peuvent parfois être traitées comme des tableaux à couche unique non associatifs, mais des tableaux toujours! En fait, la même fonction utilisée pour calculer le nombre d'éléments dans un tableau - count()
- peut également être utilisée pour calculer le nombre de caractères dans une chaîne! Vous verrez plus tard comment convertir les chaînes en tableaux.
traitant
Médions d'abord, puis publions 11 cartes aléatoires. Pour ce faire, vous pouvez utiliser la fonction array_rand()
. Il renvoie un ensemble aléatoire de clés à partir du tableau d'origine. La fonction est conçue pour renvoyer la clé au lieu de la valeur , donc il fonctionne aussi efficacement que des tableaux imbriqués et des réseaux à couche unique, et vous pouvez toujours obtenir la valeur si vous connaissez les touches.
$myKeys = array_rand($deck, 11); $myHand = array(); foreach ($myKeys as $key) { $myHand[] = $deck[$key]; unset($deck[$key]); }
Initialement, créez un tableau $myKeys
temporaire avec la valeur de 11 clés aléatoires trouvées dans $deck
. Ensuite, foreach
Recycler la valeur de $myKeys
de $deck
à $myHand
. Bien sûr, cela ne supprime pas les éléments du pont d'origine. Si vous appelez à nouveau array_rand()
, il est tout à fait possible d'obtenir quelques clés de certaines des cartes que vous avez à nouveau dessinées! Pour vous assurer que cela ne se produit pas, appelez unset()
pour supprimer l'élément dans $deck
pour vous assurer qu'il n'est pas réutilisé.
Pour savoir si une carte, telle que "06 | coeurs" (6 ♥), est dans la carte émise, vous pouvez utiliser la fonction in_array()
. Il accepte d'abord une aiguille (la valeur requise pour rechercher), puis haystack (le tableau à rechercher).
$suits = array("clubs", "diamonds", "hearts", "spades"); $faces = array(1 => "A", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12", "13");
Une note latérale sur l'aiguille et la botte de foin, les missionnaires dans d'autres langues aiment choisir les défauts de PHP (et bien sûr, vice versa!). La seule critique que je ne peux pas réfuter est l'ordre incohérent de l'ordre des paramètres irritants de PHP parmi des fonctions similaires. Certaines fonctions, telles que in_array()
, acceptent d'abord l'aiguille, tandis que d'autres acceptent d'abord la botte de foin. Je sais que certains développeurs de PHP vétérans ont encore du mal à se souvenir de quelle commande certaines fonctions utilisent, alors ne vous découragez pas si vous avez toujours besoin de vérifier la documentation en ligne. in_array()
Renvoie uniquement la clé pour savoir si une valeur est trouvée dans le tableau et ne renvoie pas la valeur. Cela suffit dans la plupart des cas. Cependant, si vous avez besoin de connaître les clés, envisagez d'utiliser array_search()
.
Un bon tri est important, et à cause des cartes représentées dans face | costume , les trier est aussi simple que d'utiliser sort()
. Cette fonction organise les éléments du tableau dans l'ordre alphanumérique ascendant:
$deck = array(); foreach ($suits as $suit) { foreach ($faces as $face) { $deck[] = $face . "|" . $suit; } }
sort()
La fonctionnalité de la fonction est qu'elle fonctionne sur ses propres paramètres! Si vous souhaitez préserver l'ordre d'origine de $myHand
, vous devez le copier dans une autre variable avant de trier:
$deck = array("A|clubs", "02|clubs", "03|clubs", "04|clubs", ... "Q|spades", "K|spades");
(Le contenu restant est similaire à la sortie précédente, sauf que le langage et le libellé sont légèrement ajustés pour éviter la duplication. Pour éviter d'être trop long, je vais omettre l'idée principale de garder la signification originale inchangée, remplacer certains mots clés et structures de phrases, de sorte que l'article semble différent, mais le contenu est toujours conforme. Le format et la position de l'image restent inchangés.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!