In der PHP -Programmierung müssen wir häufig mit String -Vergleichsvorgängen umgehen, insbesondere in Szenarien mit bestimmten Präfixen wie URLs, Namespaces oder Dateipfaden. Die Funktion von STRNCMP () ist ein effizientes Tool, mit dem verglichen werden kann, ob zwei Zeichenfolgen für die ersten N -Zeichen gleich sind. In diesem Artikel wird detailliert erläutert, wie Strncmp () verwendet wird, um festzustellen, ob die Präfixe der entsprechenden Zeichenfolgen in zwei Arrays übereinstimmen.
STRNCMP () ist eine integrierte Funktion von PHP, die die Präfix-Teile von zwei Zeichenfolgen nach Anzahl der Zeichen vergleicht. Die grundlegende Syntax ist wie folgt:
<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 und $ String2 sind zwei Strings, die verglichen werden müssen.
$ Länge ist die Anzahl der zu vergleichen zu vergleichen (ab Anfang);
Der Rückgabewert ist:
0 bedeutet, dass das Präfix das gleiche ist;
Weniger als 0 bedeutet, dass das Präfix von $ String1 in der Wörterbuchreihenfolge weniger als $ String2 beträgt.
Ein Präfix von mehr als 0 bedeutet, dass $ String1 in der Wörterbuchreihenfolge größer als $ String2 ist.
Angenommen, wir haben zwei Arrays, die eine Reihe von Zeichenfolgen enthalten, und jetzt möchten wir feststellen, ob das Präfix (Länge des angegebenen Werts) jedes Zeichenpaars in diesen beiden Arrays gleich ist.
<span><span><span class="hljs-meta"><?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> => </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. "</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">" Rechts:Präfix -Matching"</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. "</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">" Rechts:Präfix -Missverhältnis"</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>
<span><span>1. 1 Rechts:Präfix -Matching
1. 2 Rechts:Präfix -Matching
1. 3 Rechts:Präfix -Missverhältnis
</span></span>
Behandeln Sie die Arraylänge inkonsistente Situationen : Das obige Beispiel verwendet ? '' Um ein Array-Fehler außerhalb des Gebers zu vermeiden. Sie können strengere Array -Längenprüfungen entsprechend den tatsächlichen Anforderungen durchführen.
Bestimmung der Präfixlänge : Die Auswahl einer geeigneten $ -Länge ist sehr kritisch. Wenn die Vergleichslänge die tatsächliche Zeichenfolgelänge überschreitet, wird ein Fehler nicht angegeben, kann jedoch zu ungenauen Vergleichsergebnissen führen.
Fall ignorieren : Wenn Sie den Vergleich ignorieren möchten, können Sie Strtolower () oder Strtoupper () verwenden, um die Zeichenfolge einheitlich zu verarbeiten.
<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">// 忽略大小写Präfix -Matching</span></span><span>
}
</span></span>
Durch die Funktion von STRNCMP () können PHP -Entwickler leicht vergleichen, ob die Präfixe von zwei Zeichenfolgen konsistent sind, insbesondere für die Handhabung von Szenarien wie Pfadanpassung, Keyword -Extraktion und Klassifizierungserkennung. In Array -Operationen werden die Nützlichkeit besser widerspiegeln. Das Mastering dieser Funktion verbessert Ihre Effizienz und Genauigkeit bei der String -Verarbeitung.