I ran the following experiment to compare arrays.
1 st - using (substr($key,0,5 == "HTTP_") & 2 nd - using (!strncmp($key, 'HTTP_', 5))
I wanted to work out the fastest way to get the first few characters from a array
BENCHMARK ITERATION RESULT IS:
if (substr($key,0,5 == "HTTP_").... - 0,000481s
if (!strncmp($key, 'HTTP_', 5)).... - 0,000405s
strncmp() is 20% faster than substr() :D
<?php
// SAMPLE FUNCTION
function strncmp_match($arr)
{
foreach ($arr as $key => $val)
{
//if (substr($key,0,5 == "HTTP_")
if (!strncmp($key, 'HTTP_', 5))
{
$out[$key] = $val;
}
}
return $out;
}
// EXAMPLE USE
?><pre><?php
print_r(strncmp_match($_SERVER));
?></pre>
will display code like this:
Array
(
[HTTP_ACCEPT] => XXX
[HTTP_ACCEPT_LANGUAGE] => pl
[HTTP_UA_CPU] => x64
[HTTP_ACCEPT_ENCODING] => gzip, deflate
[HTTP_USER_AGENT] => Mozilla/4.0
(compatible; MSIE 7.0;
Windows NT 5.1;
.NET CLR 1.1.4322;
.NET CLR 2.0.50727)
[HTTP_HOST] => XXX.XXX.XXX.XXX
[HTTP_CONNECTION] => Keep-Alive
[HTTP_COOKIE] => __utma=XX;__utmz=XX.utmccn=(direct)|utmcsr=(direct)|utmcmd=(none)
)
strncmp
(PHP 4, PHP 5)
strncmp — String-Vergleich der ersten n Zeichen (Binary safe)
Beschreibung
int strncmp
( string $str1
, string $str2
, int $len
)
Diese Funktion ist ähnlich strcmp() mit dem Unterschied, dass Sie die (maximale) Anzahl Zeichen (len ) angeben können, die bei jedem String verglichen werden soll.
Beachten Sie, dass der Vergleich Groß- und Kleinschreibung berücksichtigt.
Parameter-Liste
- str1
-
Die erste Zeichenkette.
- str2
-
Die zweite Zeichenkette.
- len
-
Die Anzahl der Zeichen, die für den Vergleich herangezogen werden soll.
Rückgabewerte
Ist str1 kleiner als str2 wird < 0 zurückgegeben, ist str1 größer als str2 > 0, und bei Gleichheit gibt die Funktion 0 zurück.
Siehe auch
- preg_match() - Führt eine Suche mit einem regulären Ausdruck durch
- strcmp() - Vergleich zweier Strings (Binary safe)
- strcasecmp() - Vergleich von Zeichenketten ohne Unterscheidung der Groß- und Kleinschreibung (Binary safe)
- substr() - Gibt einen Teil eines Strings zurück
- stristr() - Wie strstr, aber unabhängig von Groß- bzw. Kleinschreibung
- strncasecmp() - Binärdaten-sicherer und groß- und kleinschreibungs-unabhängiger Stringvergleich der ersten n Zeichen
- strstr() - Findet das erste Vorkommen eines Strings
strncmp
codeguru at crazyprogrammer dot cba dot pl
24-Jan-2008 08:07
24-Jan-2008 08:07
Anonymous
17-Apr-2002 01:46
17-Apr-2002 01:46
strncmp("sample","sam",4) returns 1 because the final requirement is if one string terminates before len, then the other must also terminate at that position.
You can imagine that all your strings have one more final, invisible "termination" character. If that termination character happens to be within in len, then it must match, too.
For instance, write that termination character with, say, the sequence "\0". Then you can equivalently consider that function call as strncmp("sample\0","sam\0",4).
So, the "p" in "sample" does not match the termination character in "sam".
