Archief - PHP: Vergelijking van Strings

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

50Euro

Legacy Member
De Code:
PHP:
$string_1 = "00008";
$string_2 = "007";
$string_3 = "00008-OK";
if ($string_2 < $string_1)
    print("$string_2 is less than §string_1<br>");
if ($string_3 < $string_2)
    print("$string_3 is less than §string_2<br>");
if ($string_1 < $string_3)
    print("$string_1 is less than §string_3<br>");

De Output:
007 is less than 00008 // numeric comparison
00008-OK is less than 007 // string comparison
00008 is less than 00008-OK // string comparison - contradiction!

Die laatste begrijp ik dus niet...

*EDIT* Ik ben PHP aan het leren. Dit script heeft geen bedoeling maar is een voorbeeld uit "PHP4 - Het Complete Boek"

Dece

Legacy Member
de mathematische vergelijkingsoperatoren kunnen geen tekst vergelijken.
wat je kan doen is het volgende
PHP:
<?php
$string1 ="abcdef";
$string2 = "abcde";
$string3 = "abcedefghei";
$stringlen1 = strlen($string1);
$stringlen2 = strlen($string2);
$stringlen3 = strlen($string3);
if ($stringlen2 < $stringlen1) {
    print("$string2 is less than string1<br>");
}
if ($stringlen3 < $stringlen2) {
    print("$string_3 is less than  §string_2<br>");
}
if ($stringlen1 < $stringlen3) {
    print("$string_1 is less than §string_3<br>");
}
?>

verbeter me indien ik verkeerd ben

sneax

Legacy Member
de twee eerste zijn pure 'getallen' en php zal bij logische operatoren hun waarde vergelijken

bij de derde vergelijking hebt ge één van de twee als 'string' (TEXT) en NIET een getal, php zal dus de lengte van de strings vergelijken

00008-ok heeft meer letterkes dan 00008 dus ...

dat probeert uw scriptje te tonen

50Euro

Legacy Member
Originally posted by sneax
de twee eerste zijn pure 'getallen' en php zal bij logische operatoren hun waarde vergelijken

bij de derde vergelijking hebt ge één van de twee als 'string' (TEXT) en NIET een getal, php zal dus de lengte van de strings vergelijken

00008-ok heeft meer letterkes dan 00008 dus ...

dat probeert uw scriptje te tonen

Ach zo,

maar dan klopt de tweede 'if', "00008-OK is less than 007", toch niet?

dJeez

Legacy Member
Als je strings vergelijkt gaat PHP (en eigenlijk eender welke andere taal die 'k ken) karakter per karakter vergelijken, vandaar dat "00008" kleiner is dan "007" (0 < 7). Aangezien in 't geval "00008" vergelijken met "00008-ok" er in 't tweede geval nog extra karakters staan na het gelijke deel (00008), is de eerste string de kleinste.

Bekijk anders de strcmp functie van C eens, dan zal je snappen waarom het zo is.

50Euro

Legacy Member
In veel boeken en site's staat verwezen naar C. Lijken die talen zo op elkaar?
Is het nodig om eerst c aan te leren? Ik ben eigenlijk gewoon van HTML naar PHP gegaan, met een beetje Flash tussen...

DarkBone

Legacy Member
50Euro zei:
In veel boeken en site's staat verwezen naar C. Lijken die talen zo op elkaar?

Is het nodig om eerst c aan te leren? Ik ben eigenlijk gewoon van HTML naar PHP gegaan, met een beetje Flash tussen...

Da's niet nodig nee, blijf maar bij PHP of de kans bestaat dat ge helemaal niks meer snapt ervan :)

killgore

Legacy Member
dJeez zei:
Als je strings vergelijkt gaat PHP (en eigenlijk eender welke andere taal die 'k ken) karakter per karakter vergelijken, vandaar dat "00008" kleiner is dan "007" (0 < 7). Aangezien in 't geval "00008" vergelijken met "00008-ok" er in 't tweede geval nog extra karakters staan na het gelijke deel (00008), is de eerste string de kleinste.

Bekijk anders de strcmp functie van C eens, dan zal je snappen waarom het zo is.

wrom naar een c-functie verwijzen als deze in PHP ook bestaat???
http://be.php.net/strcmp

50Euro

Legacy Member
Oké bedankt! ik snap het nu wel!

Ps. Die PHP code is er toch niet op vooruitgegaan met het nieuwe forum...
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan