/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
forbandede php
Fra : Niels Graverholt


Dato : 21-06-02 00:55

Kan nogen fortælle mgi, hvordan det her lkan lade sig gøre


<?php
$s = "1299999";
echo(strpos($s,"12"));
if(strpos($s,"12")==0)
{
echo(ok);
}
else
{
echo(nix);
}
?>


Her skriver skidtet, at strpos er 0, og længere nede skrives der ok.
Hvis jeg så ændrer 1299999 til 2299999 så skriver strpos ikke noget
(hvilket jo er korrejkt), men længere nede skrives der STADIGVÆK ok.
Hvad fanden er der galt???????????????


 
 
Martin Mouritzen (21-06-2002)
Kommentar
Fra : Martin Mouritzen


Dato : 21-06-02 01:27

After I finished the 3 Pan Galactic Gargle Blasters, ngr@mail.dk
(Niels Graverholt) just offered me, he muttered some weird stuff, and
I had to correct this gibberish:

>Her skriver skidtet, at strpos er 0, og længere nede skrives der ok.
>Hvis jeg så ændrer 1299999 til 2299999 så skriver strpos ikke noget
>(hvilket jo er korrejkt), men længere nede skrives der STADIGVÆK ok.
>Hvad fanden er der galt?

Først og fremmest fik jeg "??????????????" til overs i din besked.

Og så til sagen:
Du benytter funktionen forkert.

strpos funktionen returnerer hvor i strengen (parameter 1) den finder
den givne streng (parameter 2).

I dit første eksempel finder den needle(parameter 2) allerførst i
haystack (parameter 1), derfor returnerer den 0.

Hvis man så erstatter det med noget der ikke bliver fundet, vil
funktionen returnere falsk.

Nu er det sådan at PHP forstår 0 (nul) som falsk,
: echo(strpos($s,"12"));
vil derfor ikke udskrive noget, men når du tjekker på om det er == 0,
så vil det evaluere til sandt, og den vil gå videre ind i if'en og
skrive "ok".

Den rigtige måde at bruge funktionen på (som også står i manualen) er
(snuppet fra manualen):

: // in PHP 4.0b3 and newer:
: $pos = strpos($mystring, "b");
: if ($pos === false) { // note: three equal signs
: // not found...
: }
:
: // in versions older than 4.0b3:
: $pos = strpos($mystring, "b");
: if (is_string($pos) && !$pos) {
: // not found...
: }
--
Nano Martin Mouritzen Phone +45 27105580
Vesterbrogade 30C. 2. Programmer Advanced Simplicity
DK-8000 Århus martin@nano.dk http://www.nano.dk
Nano nu officiel dansk distributør af UltraEdit, se mere på websitet

Niels Graverholt (21-06-2002)
Kommentar
Fra : Niels Graverholt


Dato : 21-06-02 08:39

On Fri, 21 Jun 2002 02:27:24 +0200, Martin Mouritzen <martin@fez.dk>
wrote:

Tak skal du have.

Jeg var ikke klar over, at der både findes == og ===

vh
Niels


Lars Michael (22-06-2002)
Kommentar
Fra : Lars Michael


Dato : 22-06-02 17:41

Øh, hvad betyder "===" i klar tale?

takker!

ngr@mail.dk (Niels Graverholt) wrote in message news:<3d12d7ea.2219717@news.stofanet.dk>...
> On Fri, 21 Jun 2002 02:27:24 +0200, Martin Mouritzen <martin@fez.dk>
> wrote:
>
> Tak skal du have.
>
> Jeg var ikke klar over, at der både findes == og ===
>
> vh
> Niels

Peter Brodersen (22-06-2002)
Kommentar
Fra : Peter Brodersen


Dato : 22-06-02 17:46

On 22 Jun 2002 09:40:52 -0700, lmsoren@hotmail.com (Lars Michael)
wrote:

>Øh, hvad betyder "===" i klar tale?

http://www.php.net/manual/en/language.operators.comparison.php

Identisk med - til forskel for == skal de to værdier også være af
samme type (fx begge strings).

--
- Peter Brodersen

Niels Andersen (23-06-2002)
Kommentar
Fra : Niels Andersen


Dato : 23-06-02 16:15

Lars Michael wrote in <a08d26b5.0206220840.302ab115@posting.google.com>:
> Øh, hvad betyder "===" i klar tale?

<?php

$a = 0; // integer / heltal
$b = "0"; // string / tekst

if ($a == $b) {
echo "Denne er sand";
}

if ($a === $b ) {
// bliver ikke udført
} else {
Men denne giver falsk, da de ikke er af samme type.
}
?>

Jeg synes i hvert fald at det er temmeligt klart.

--
Mvh.

Niels Andersen
(la nels. anersyn.)

Søg
Reklame
Statistik
Spørgsmål : 177520
Tips : 31968
Nyheder : 719565
Indlæg : 6408661
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste