Position actuelle: Accueil> Derniers articles> Comment utiliser la fonction Strncmp en PHP pour déterminer si les préfixes des chaînes en deux tableaux correspondent? Explication détaillée de la méthode d'opération

Comment utiliser la fonction Strncmp en PHP pour déterminer si les préfixes des chaînes en deux tableaux correspondent? Explication détaillée de la méthode d'opération

gitbox 2025-07-18

Dans la programmation PHP, nous devons souvent faire face aux opérations de comparaison des chaînes, en particulier dans les scénarios avec des préfixes spécifiques tels que les URL, les espaces de noms ou les chemins de fichier. La fonction strncmp () est un outil efficace qui peut être utilisé pour comparer si deux chaînes sont les mêmes sur les n caractères des premiers. Cet article expliquera en détail comment utiliser strncmp () pour déterminer si les préfixes des chaînes correspondantes en deux tableaux correspondent.

1. Introduction à la fonction strncmp ()

Strncmp () est une fonction intégrée de PHP qui compare les parties préfixes de deux chaînes en nombre de caractères. La syntaxe de base est la suivante:

 <span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-title function_ invoke__">strncmp</span></span><span> ( </span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$string1</span></span><span> , </span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$string2</span></span><span> , </span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$length</span></span><span> )
</span></span>
  • $ String1 et $ string2 sont deux chaînes à comparer;

  • $ La longueur est le nombre de caractères à comparer (à partir du début);

  • La valeur de retour est:

    • 0 signifie que le préfixe est le même;

    • Moins de 0 signifie que le préfixe de $ String1 est inférieur à $ String2 dans l'ordre du dictionnaire;

    • Un préfixe supérieur à 0 signifie que $ string1 est supérieur à $ string2 dans l'ordre du dictionnaire.

2. Scénario d'utilisation: Déterminez si les préfixes des chaînes en deux tableaux correspondent

Supposons que nous ayons deux tableaux contenant un ensemble de chaînes, et maintenant nous voulons déterminer si le préfixe (longueur de la valeur spécifiée) de chaque paire de chaînes dans ces deux tableaux est le même.

L'exemple de code est le suivant:

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>

</span><span><span class="hljs-variable">$array1</span></span><span> = [</span><span><span class="hljs-string">'apple123'</span></span><span>, </span><span><span class="hljs-string">'banana456'</span></span><span>, </span><span><span class="hljs-string">'cherry789'</span></span><span>];
</span><span><span class="hljs-variable">$array2</span></span><span> = [</span><span><span class="hljs-string">'appleXYZ'</span></span><span>, </span><span><span class="hljs-string">'bananaABC'</span></span><span>, </span><span><span class="hljs-string">'cheese000'</span></span><span>];
</span><span><span class="hljs-variable">$prefixLength</span></span><span> = </span><span><span class="hljs-number">5</span></span><span>;

</span><span><span class="hljs-variable">$result</span></span><span> = [];

</span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$array1</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$index</span></span><span> =&gt; </span><span><span class="hljs-variable">$str1</span></span><span>) {
    </span><span><span class="hljs-variable">$str2</span></span><span> = </span><span><span class="hljs-variable">$array2</span></span><span>[</span><span><span class="hljs-variable">$index</span></span><span>] ?? </span><span><span class="hljs-string">''</span></span><span>;
    </span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">strncmp</span></span><span>(</span><span><span class="hljs-variable">$str1</span></span><span>, </span><span><span class="hljs-variable">$str2</span></span><span>, </span><span><span class="hljs-variable">$prefixLength</span></span><span>) === </span><span><span class="hljs-number">0</span></span><span>) {
        </span><span><span class="hljs-variable">$result</span></span><span>[] = </span><span><span class="hljs-string">"1 et 1 "</span></span><span> . (</span><span><span class="hljs-variable">$index</span></span><span> + </span><span><span class="hljs-number">1</span></span><span>) . </span><span><span class="hljs-string">" droite:Correspondance préfixe"</span></span><span>;
    } </span><span><span class="hljs-keyword">else</span></span><span> {
        </span><span><span class="hljs-variable">$result</span></span><span>[] = </span><span><span class="hljs-string">"1 et 1 "</span></span><span> . (</span><span><span class="hljs-variable">$index</span></span><span> + </span><span><span class="hljs-number">1</span></span><span>) . </span><span><span class="hljs-string">" droite:Décalage préfixe"</span></span><span>;
    }
}

</span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$result</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$line</span></span><span>) {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$line</span></span><span> . PHP_EOL;
}
</span></span>

Le résultat de la sortie est:

 <span><span>1 et 1 1 droite:Correspondance préfixe
1 et 1 2 droite:Correspondance préfixe
1 et 1 3 droite:Décalage préfixe
</span></span>

3. Instructions pratiques

  1. Gérer la longueur du tableau des situations incohérentes : l'exemple ci-dessus utilise ?? '' Pour éviter l'erreur hors limites. Vous pouvez effectuer des vérifications de longueur de tableau plus rigoureuses en fonction des besoins réels.

  2. Détermination de la longueur du préfixe : Choisir une longueur de $ appropriée est très critique. Si la longueur de comparaison dépasse la longueur réelle de la chaîne, une erreur ne sera pas signalée, mais peut entraîner des résultats de comparaison inexacts.

  3. Ignore Case : Si vous souhaitez ignorer le boîtier à titre de comparaison, vous pouvez utiliser Strtolower () ou Strtoupper () pour traiter uniformément la chaîne.

Exemple:

 <span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">strncmp</span></span><span>(</span><span><span class="hljs-title function_ invoke__">strtolower</span></span><span>(</span><span><span class="hljs-variable">$str1</span></span><span>), </span><span><span class="hljs-title function_ invoke__">strtolower</span></span><span>(</span><span><span class="hljs-variable">$str2</span></span><span>), </span><span><span class="hljs-variable">$prefixLength</span></span><span>) === </span><span><span class="hljs-number">0</span></span><span>) {
    </span><span><span class="hljs-comment">// 忽略大小写Correspondance préfixe</span></span><span>
}
</span></span>

4. Résumé

Grâce à la fonction strncmp () , les développeurs PHP peuvent facilement comparer si les préfixes de deux chaînes sont cohérents, en particulier adaptés aux scénarios de gestion tels que la correspondance de chemin, l'extraction de mots clés et la reconnaissance de la classification. Utilisé dans les opérations du tableau peut mieux refléter son utilité. La maîtrise de cette fonction améliorera votre efficacité et votre précision dans le traitement des chaînes.