PHP är kul... oftast. Just nu är det mindre kul... ;)
Jag har följande situation:
//utsnitt ur form
<input type="hidden" name="shyNewPost" value="newP" > <BR>
<input class="buttonG" type="submit" name="submitPost" value="Post it!" ><BR><BR>
//Hjälpfunktion - anv av de flesta av mina skript - ger bland
//annat true korrekt för wasChosen("X", "I want to comment!")
function wasChosen($name, $val) {
return (isSet($_POST["$name"]) && $_POST["$name"] == $val);
}
//Utdrag ur skriptet
echo ($_POST['shyPost'] == "1")." A<BR>";
echo ($_POST['Post'] == "Post News!")." B<BR>";
echo (strcmp($_POST['Post'], "Post News!"))." C<BR>";
if (!(wasChosen("shyPost", "1") && wasChosen("Post", "Post News!")))
exit("New: Something's odd...");
Ger utskriften:
1 A
B
1 C
New: Something's odd...
Enligt https://www.php.net (om jag har förstått det rätt) är skillnaden den att strcmp alltid funkar då den jämför strängarna/bit, medan == är OK så länge man inte riskerar en typkonvertering före jämförelsen?
Stämmer detta eller har jag fattat fel?
Om det stämmer: borde inte det innebära att == ibland ger true när det inte borde, men där strcmp korrekt ser att det är false? Hur i självaste... kan resultatet bli det omvända: att strcomp ger true när == är falskt???! :l
Dessutom använder sig praktiskt taget vartenda skript jag har av wasChosen som funkat hur bra som helst ända till nu! Även på strängar med mellanslag och annat udda i.
strcmp returnerar inte sant eller falskt, utan den returnerar 0 (noll) om värdena är lika, annars 1 eller -1 beroende på vilket värde som är störst.
Så vad jag kan se stämmer det hela för dig, '==' skriver inte ut något, vilket är lika med false (de stämmer inte), medan strcmp skriver ut 1 vilket betyder att de inte är lika med varandra.
Vill du även använda typkontroll vid din jämförelse samt få sant/falskt använder du istället '==='.
... Så vad jag kan se stämmer det hela för dig, '==' skriver inte ut något, vilket är lika med false (de stämmer inte), medan strcmp skriver ut 1 vilket betyder att de inte är lika med varandra....