---
title: "strcmp versus == ?"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/113661-strcmp-versus"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "aasah"
published: "2004-10-16T09:15:47.000Z"
updated: "2004-10-16T10:53:33.000Z"
replies: 4
views: 295
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/php/113661-strcmp-versus"
---

# strcmp versus == ?

## #1 — aasah, 2004-10-16T09:15Z

PHP är kul... oftast. Just nu är det mindre kul... ;)

Jag har följande situation:

```php
//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?

1) Stämmer detta eller har jag fattat fel?

2) 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. 

3) Så varför spårar den ur just nu? Vad är tokigt? 

Tacksam för hjälp att begripa...

Permalänk: https://www.webforum.nu/p/113661

## #2 — Matte, 2004-10-16T09:33Z

[strcmp](http://se2.php.net/manual/en/function.strcmp.php) 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 '==='.

Permalänk: https://www.webforum.nu/p/1460274

## #3 — aasah, 2004-10-16T09:45Z

> **Matte skrev:**
>
> ... 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....

Åh! Men... de **är** ju lika!!!

```php
echo ($_POST['shyPost'] == "1")." A<BR>";
echo $_POST['Post']." B ".strlen($_POST['Post'])."<BR>";
echo strlen("Post News!")." C<BR>";
echo ($_POST['Post'] == "Post News!")." D<BR>";
if (!(wasChosen("shyPost", "1") && wasChosen("Post", "Post News!")))
     exit("New: Something's odd...");
```

 

> 1 A
> Post news! B 10
> 10 C
> D
> New: Something's odd...

 De har ju samma värde och samma längd!!! Vad är då felet???

Permalänk: https://www.webforum.nu/p/1460280

## #4 — Matte, 2004-10-16T10:03Z

Du har gement 'n' i news som du jämför med versalt 'N' i News.

'n' och 'N' är inte samma tecken.

Permalänk: https://www.webforum.nu/p/1460285

## #5 — aasah, 2004-10-16T10:53Z

Åh! :r Det har jag inte sett fast jag stirrat på detta både länge och väl... x(

TACK, matte!

Permalänk: https://www.webforum.nu/p/1460312

---

Tråden på webben: https://www.webforum.nu/amne/php/113661-strcmp-versus
