Contacts

PHP Array_Search: recherchez la valeur dans le tableau. Comment vérifier la présence d'une valeur dans la recherche de tableau PHP PHP dans le tableau associatif par valeur

Souvent, lors de l'écriture du code, il est nécessaire de vérifier si la valeur de l'élément dans la matrice est nécessaire. Aujourd'hui, nous examinerons plusieurs fonctions, avec laquelle cela peut être fait.

Vérification de la présence d'une valeur d'élément dans une matrice peut être utilisée lors de la résolution de diverses tâches de programmation.

Nous pouvons obtenir différents tableaux de notre base de données et vérifier la disponibilité de l'une ou une autre valeur. La valeur souhaitée peut être transmise de l'utilisateur de notre script lorsqu'elle est à la recherche de quelque chose. Selon les résultats d'une telle recherche, vous pouvez faire certaines actions. Tout dépend de la tâche spécifiquement définie, cependant, les algorithmes de recherche de la valeur dans le tableau seront seuls et identiques.

Aujourd'hui, nous les considérerons.

Vérifiez la disponibilité dans le tableau. In_array ()

Une fonction in_array () Laissez-nous vérifier toute valeur dans le tableau.

Si le résultat de son fonctionnement est réussi et que l'élément souhaité dans la matrice est trouvé, la fonction reviendra. vrai., c'est la vérité.

La fonction prend 2 paramètres requis:<Что ищем> et<Где ищем>.

Il peut également prendre un autre paramètre facultatif:<Тип данных>. Si ce troisième paramètre facultatif est question vrai., alors le type de données est également vérifié. C'est-à-dire '2' et 2 ne sera pas la même chose. Dans le premier cas, il s'agit d'une chaîne, dans la seconde. Et puis toute la caractéristique in_array () ne retournera pas la valeur vrai..

Il est également nécessaire de se rappeler que la fonction se compare en tenant compte du registre des symboles.

Regardons le travail de cette fonction sur un exemple simple.
Nous avons besoin d'un tableau. En utilisant une fonction, vérifiez la présence d'une valeur dans la matrice et affichez un message spécifique à l'écran.

Après avoir dépensé la fonction, le message "Oui" s'affiche à l'écran, car l'élément "Marina" de notre tableau est présent.

Modifiez le premier paramètre dans la fonction de n'importe quel élément inexistant et vous verrez le message "Non".

Vérifiez la disponibilité dans le tableau. Fonction Array_Search ()

Il y a une autre fonction à rechercher. Array_Search ()Ce qui, contrairement à la précédente, vous retournera la clé de l'élément trouvé. Cela peut être utile si nous travaillons avec un tableau associatif.

La fonction prend les mêmes paramètres que le précédent. Dans ce cas, le troisième paramètre est également facultatif.

Voyons comment il peut être utilisé, travaillant avec un tableau associatif.

"Octobre", "argent" \u003d\u003e 200, "nom" \u003d\u003e "mila"); $ Clé \u003d array_search ("Mila", $ MASS1); Si ($ clé) echo $ clé; ?\u003e.

Dans ce cas, nous verrons sur l'écran "Nom", c'est-à-dire la clé de l'élément souhaité avec la valeur de "mila".

Ces deux fonctions sont très similaires et ne diffèrent essentiellement que par la valeur de retour.

Rechercher des valeurs dans une matrice multidimensionnelle

Et si nous travaillons avec une matrice multidimensionnelle? Après tout, ses éléments seront d'autres tableaux.

Ici, nous avons déjà considéré que des algorithmes ne fonctionneront pas.

En fait, tout n'est pas si difficile, il suffit de compliquer un peu le mécanisme entier et d'utiliser le cycle, par exemple, pour chaque ()qui fonctionne parfaitement avec des tableaux.

Supposons que nous ayons un tableau multidimensionnel. Ses valeurs directes sont d'autres tableaux dans lesquels la valeur souhaitée de l'élément peut être contenue.

Tout ce que vous voulez faire est de déplacer les éléments du tableau d'origine dans le cycle pour chaque (). Chaque élément de ce réseau sera démonté sur la touche ($ clé) et la valeur (valeur $).

La signification sera chacune des tableaux dans la matrice multidimensionnelle principale. Ici, nous travaillerons avec ces valeurs, recherchant dans chaque réseau intérieur la valeur souhaitée de l'élément.

Lorsque vous trouvez un message à l'écran qu'un tel élément existe, et sinon, nous retirerons un autre message qu'il n'y a pas d'élément de ce type.

Voyons tout cela sur le code de code:

"Anna", "id" \u003d\u003e 234); $ MASS2 \u003d Array ("Nom" \u003d\u003e "Anton", "ID" \u003d\u003e 24); $ MASS2 \u003d Array ("Nom" \u003d\u003e "Ivan", "ID" \u003d\u003e 007); Foreach ($ masse2 comme $ clé \u003d\u003e valeur $) (NAOM $. \u003d In_array ("ivan", valeur de valeur);) si ($ nom) echo "OK!"; Sinon echo "non avoir un élément!"; ?\u003e.

Comme vous pouvez le constater, nous déclarons au début le tableau multidimensionnel lui-même.

Dans le même temps, il est nécessaire d'écrire non seulement un signe d'égalité, mais ". \u003d".

Ceci est fait de sorte que la variable $ Name n'est pas écrasée sur chaque itération et complétée. Après tout, si l'élément se trouvera sur la première itération et la valeur du nom de $ sera enfermée la valeur "vraie" et sur la deuxième itération (c'est-à-dire dans la deuxième matrice interne) de la valeur souhaitée de L'élément, la valeur de la variable de nom $ est simplement convertie et, à la fin, nous n'avons tout simplement pas de résultat correct.

Comme vous le comprenez, le résultat de ce code sera le message «OK! Élément ici! ".

Essayez de changer l'élément souhaité au non-existant et vous verrez le message "Non avoir un élément!".

Bien sûr, lorsque vous trouvez ou non un certain article, nous ne pouvons pas simplement afficher des messages, mais faire toute autre action. Tout dépend de ce que vous devez faire. Par exemple, s'il existe une valeur souhaitée dans la matrice, vous pouvez donner à l'utilisateur une information spécifique, etc.

C'est tout aujourd'hui! J'espère que la leçon était compréhensible et utile! Essayez d'écrire un code similaire vous-même pour le comprendre complètement.

Et j'attends vos commentaires.

Partagez la leçon avec vos amis à l'aide des boutons de socket. Réseaux situés ci-dessous. Et également abonnez-vous aux mises à jour des blogs. Nous avons déjà collecté une assez bonne archive de matériel utile et ils ne seront reconstitués que!

Je vous souhaite une programmation réussie!

Avec vous était Anna Kotelnikova!

(PHP 4\u003e \u003d 4.0.5, PHP 5)

array_search - recherche cette valeur dans le tableau et renvoie la clé appropriée si bonne chance

La description

mixte. array_Search. (Aiguille mixte, marse de foin [, bool strict])

Vous recherchez dans la botte de foin la valeur de l'aiguille et retourne la clé, le cas échéant dans le tableau, Faux autrement.

Commenter: Si l'aiguille est une chaîne, une comparaison dépendante du registre est faite.

Commenter: À PHP 4.2.0, array_Search () Si possible, retourné NUL plutôt Faux .

Si vous passez la valeur Vrai. En tant que troisième paramètre Strict optionnel, fonction array_Search () Vérifiez également l'aiguille de type dans la matrice de foin.

Si l'aiguille est présente dans la grille de foin plus d'une fois, la première clé trouvée sera renvoyée. Afin de renvoyer les clés de toutes les valeurs trouvées, utilisez la fonction array_Keys () Avec un paramètre facultatif Search_Value.


Exemple 1. Exemple d'utilisation array_Search ()

$ Array \u003d array (0 \u003d\u003e "bleu", 1 \u003d\u003e "rouge", 2 \u003d\u003e 0x00000000, 3 \u003d\u003e "vert", 4 \u003d\u003e "rouge"); $ clé \u003d array_search ("rouge", $ TRAY ); // $ clé \u003d 1;
$ Clé \u003d array_search ("vert", $ TRAY); // $ clé \u003d 2; (0x000000 \u003d\u003d 0 \u003d\u003d "vert")
$ Key \u003d array_search ("vert", $ TRAY, TRUE); // $ clé \u003d 3;
?>
Attention

Cette fonctionnalité peut revenir en valeur logique. Faux et ne pas relatif à la valeur de type logique qui est donnée à Faux , par exemple, 0 ou "". Pour plus d'informations, reportez-vous à la section Type BOULEV. Utilisez l'instruction \u003d\u003d\u003d pour vérifier la valeur renvoyée par cette fonction.

J'ai déjà utilisé la fonction Array_Search () pour rechercher des valeurs dans le tableau, car elle a entendu et lu à plusieurs reprises qu'elle fonctionne sensiblement plus rapidement que la recherche du tableau dans le cycle, mais à quel point il ne savait pas. Enfin eu des mains pour vérifier et calculer.

Comparez la vitesse de recherche dans la matrice à l'aide de cette fonction avec le surfaçage habituel de la matrice dans les cycles et pendant les cycles. Sur 10-100 éléments de la matrice, la différence d'invisible et de temps si peu qu'elle puisse être aspensée. Mais pour les grands tableaux, la différence était très importante. Avec une augmentation de la taille de la matrice par une commande, le temps de recherche a considérablement augmenté. Avec cent mille articles, la vitesse de foresach est tombée à 0,013 secondes et, tandis que: à 0,017, malgré le fait que Array_Search () a ralenti, mais reste resté un ordre de grandeur plus rapidement - 0,004 secondes. Pour un grand script fonctionnant avec de grands tableaux, le remplacement de la recherche dans le cycle à la recherche avec Array_Search () ne sera pas du tout l'optimisation de la puce.

À cet égard, je me suis souvenu d'une discussion récente avec l'un des collègues de travail - sur la question de savoir si le programmeur doit connaître toutes ces fonctions linguistiques intégrées, ou un "programmeur de programmeur de programmeur" et des connaissances générales. Sans sortir avec raisonnant sur cet entrepôt d'esprit, je pense qu'il est encore nécessaire de connaître les fonctions, peut-être pas la totalité de la syntaxe dans les détails, mais bien que ce que les fonctions sont là et qu'ils peuvent en termes généraux.

UPD: Besoin d'un entrepôt de programmeur de l'esprit, également nécessaire! Et les soins avec la mémoire n'empêcheront pas (inspiré de la pause et de la plage :)

Sous le code de script Habracine, qui a calculé l'heure:

$ Masse \u003d 100000; // le nombre de valeurs dans le tableau dans lequel nous rechercherons
$ recherche \u003d 50 000; // dans le tableau, nous rechercherons cette valeur
$ first_result \u003d tableau (); // Tableau des résultats, pour calculer la valeur moyenne de la première option
$ Secondaire_result \u003d tableau (); // Tableau des résultats, pour calculer la valeur moyenne de la deuxième option
$ tiers_result \u003d tableau (); // une gamme de résultats, pour calculer la valeur moyenne de la troisième option

// Créer et remplir un tableau
$ test_array \u003d plage (0, $ masse-1); // merci selenit))

/*
$ test_array \u003d tableau ();
pour ($ i \u003d 0; $ i<$mass; $i++)
{
$ test_array \u003d $ i;
}
*/

// cycle pour compter les valeurs moyennes
pour ($ d \u003d 0; $ D<30; $d++) {

// *************** Recherche par array_search *******************

// exécuter un comptage de temps
$ TIME_START \u003d Microtime (1);
// Rechercher
$ Key \u003d array_search ($ Recherche, $ test_array, true);
// Si trouvé
Si ($ clé! \u003d\u003d false) // Vous avez besoin! \u003d\u003d et non! \u003d, car le numéro du premier élément est 0
{
Echo $ test_array [$ clé];
}
$ Time_end \u003d microtime (1);
// comptage de compte de fin

// Écrire dans un tableau de valeurs
$ first_result \u003d $ TIME_END - $ TIME_START;

// **************** Recherche par tableau avec un cycle foreach ********************

// exécuter un comptage de temps
$ TIME_START \u003d Microtime (1);
// se chercher
foreach ($ test_array comme $ ta)
{
Si ($ ta \u003d\u003d $ recherche)
{
Echo $ ta;
Se rompre;
}
}
$ Time_end \u003d microtime (1);
// comptage de compte de fin

// Écrire dans un tableau de valeurs
$ Secondaire_result \u003d $ TIME_END - $ TIME_START;

// **************** Recherche par tableau avec un cycle tandis que ********************

// exécuter un comptage de temps
$ TIME_START \u003d Microtime (1);

// Déterminez la longueur du tableau
$ Count \u003d Count ($ test_array);
$ j \u003d 0;
// se chercher
Alors que ($ j<$count)
{
Si ($ test_array [$ j] \u003d\u003d $ Recherche) // Si trouvé
{
Echo $ test_array [$ j];
Se rompre;
}
$ j ++;
}
$ Time_end \u003d microtime (1);
// comptage de compte de fin

// Écrire dans un tableau de valeurs
$ Tiers_result \u003d $ time_end - $ TIME_START;
}

$ srednee1 \u003d array_sum ($ first_result) / comptage ($ first_result);
$ SreDNee2 \u003d array_sum ($ secondaire_result) / compte ($ secondaire_result);
$ SreDnee3 \u003d array_sum ($ tiers_Result) / compte ($ tiers_Result);

Printf ("Le premier code est effectué en moyenne pour:% .7f secondes", $ SreDnee1);
Printf ("Le deuxième code est effectué en moyenne pour:% .7f secondes", $ SreDnee2);
Printf ("Le troisième code est effectué en moyenne pour:% .7f secondes", $ SreDnee3);

// Résultat:
// Le premier code est effectué en moyenne pour: 0.0000295 secondes
// deuxième code est effectué en moyenne pour: 0.0153386 secondes
// Troisième code effectué en moyenne pour: 0.0226001 secondes

Une des opérations principales lorsque vous travaillez avec des tableaux est une recherche d'une valeur spécifique. Pour cette fin, la fonction PHP Array_Search (). Il est capable de traiter à la fois des collections unidimensionnelles et associatives, renvoyant la clé de la valeur souhaitée si elle se trouve dans la matrice.

Syntaxe

Description formalisée de la fonction Array_Search () dans PHP est la suivante:

Mixte Array_Search (valeur mixte, array $ Collection [, Bool strict])

Paramètres d'entrée:

  • $ Collection - un tableau dans lequel la recherche sera faite;
  • la valeur est la valeur souhaitée de tout type;
  • strict est un drapeau logique optionnel qui établit un mécanisme de comparaison strict basé sur des types.

Mécanisme de travail

La fonction PHP Array_Search () compare alternativement la valeur avec toutes les valeurs de la matrice de collecte. Par défaut, la comparaison est effectuée sans prendre en compte les types d'opérandes. Ce paramètre peut être modifié en définissant la valeur de true pour le drapeau. La comparaison des chaînes est effectuée en ce qui concerne le registre.

Lorsque la coïncidence est détectée, la clé correspondant à l'élément trouvé est renvoyée et le fonctionnement de la fonction s'arrête. Par conséquent, il est impossible de détecter la saisie multiple de la valeur souhaitée dans un tableau.

Si aucune correspondance n'a été trouvée, la fonction renvoie la valeur booléenne false.

Vérifiez que le résultat renvoyé doit utiliser un opérateur d'égalité strict (\u003d\u003d\u003d). Ceci est important, car la fonction peut renvoyer une valeur donnée à FALSE, par exemple, 0 ou une chaîne vide.

Exemples d'utilisation

Exemple 1. Lors de la transmission d'une matrice multidimensionnelle à la fonction PHP Array_Search (), le résultat du travail est la clé de l'élément souhaité.

"Hiver", "saison2" \u003d\u003e "printemps", "saison3" \u003d\u003e "été", "saison4" \u003d\u003e "automne"); $ résultat1 \u003d array_search ("hiver", $ tableau); $ Résultat2 \u003d array_search ("été", $ TRAY); $ résultat3 \u003d array_search ("avril", $ tableau); ?\u003e.

Dans cet exemple, la variable de $ de résultat1 obtiendra "Saison1", $ résultat2 sera "Saison3", et $ Result3 sera attribué une valeur booléenne false, car la chaîne "avril" ne se produit pas dans la matrice source.

Exemple 2. La fonction PHP Array_Search () peut également traiter une matrice unidimensionnelle en comptant ses clés dans l'ordre des index numériques.

La variable de résultat $ sera attribuée à 1, selon l'indice de l'élément Hunter dans la matrice $ Array.

Exemple 3. Erreur possible lorsque vous analysez le résultat.

"Washington", 1 \u003d\u003e "Adams", 2 \u003d\u003e "Jefferson", 3 \u003d\u003e "Madison", 4 \u003d\u003e "Monroe"); $ résultat \u003d array_search ("Washington", $ présidents); Si (! $ Résultat) (Echo "G. Washington n'était pas le premier président des États-Unis";)?\u003e

Ainsi, sans vérifier le résultat résultant avec une égalité stricte, vous pouvez obtenir un message inattendu que George Washington n'était pas le premier président des États-Unis.

Exemple 4. Seule la clé de la première coïncidence détectée est renvoyée.

Malgré le fait que la valeur souhaitée se trouve dans le tableau trois fois, la fonction ne renvoie que le premier résultat - 0. Pour rechercher plusieurs correspondances, il est recommandé d'utiliser la fonction PHP Array_Keys ().



Avez-vous aimé l'article? Partagez-le