/ 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
Mærkelige funktioner
Fra : Jonas Delfs


Dato : 06-05-01 16:32

Hej

Jeg har skrevet disse funktioner:

function tjek_time($needle, $haystack)
{
foreach(array_keys($haystack) AS $array_key){
if (ereg("^([0-9]){4}-([0-9]){2}-([0-9]){2}
".$needle.":([0-9]){2}:([0-9]){2}$", $array_key)) {
return $array_key;
break;
} else {
return FALSE;
}
}
}

function tjek_tjek_time()
{
$arr['2001-05-05 15:00:00'] = "jonas1";
$arr['2001-05-05 16:00:00'] = "jonas2";

echo $arr[tjek_time("15", $arr)];
}

Når jeg så kalder tjek_tjek_time() bliver output "jonas1". Men ændrer jeg
"15" til "16" i funktionskaldet, kommer der intet output.
I mit hoved, skulle output have været "jonas2"... ?


På forhånd tak

- Jonas



 
 
Nezar Nielsen (06-05-2001)
Kommentar
Fra : Nezar Nielsen


Dato : 06-05-01 17:43

"Jonas Delfs" <nospam@delfs.dk> wrote in message
news:9d3qmn$3b2$1@sunsite.dk...
....

> Når jeg så kalder tjek_tjek_time() bliver output "jonas1". Men ændrer jeg
> "15" til "16" i funktionskaldet, kommer der intet output.
> I mit hoved, skulle output have været "jonas2"... ?

Narj, egentligt ikke - forestil dig hvordan det virker:

den tager arrayet, og kigger på hvert element - hvis elementet passer
returnerer den nøglen, ellers returnerer den falsk (og dermed afbrydes
loopet altså ved det første element der enten passer eller ikke passer).

Du ville nok have haft noget i stil med:

function tjek_time($needle, $haystack){
foreach(array_keys($haystack) AS $array_key){
if
(ereg("^([0-9]){4}-([0-9]){2}-([0-9]){2}".$needle.":([0-9]){2}:([0-9]){2}$",
$array_key)) {
return $array_key;
# return returnerer og afbryder eksekveringen, så din break linie var
overflødig
}
}
return false; #hvis ikke der var nogen nøgler der matchede..
}

--
Mvh. Nezar Nielsen
http://fez.dk/




Jonas Delfs (06-05-2001)
Kommentar
Fra : Jonas Delfs


Dato : 06-05-01 17:53

> Narj, egentligt ikke - forestil dig hvordan det virker:
>
> den tager arrayet, og kigger på hvert element - hvis elementet passer
> returnerer den nøglen, ellers returnerer den falsk (og dermed afbrydes
> loopet altså ved det første element der enten passer eller ikke passer).
>
> Du ville nok have haft noget i stil med:
>
> function tjek_time($needle, $haystack){
> foreach(array_keys($haystack) AS $array_key){
> if
>
(ereg("^([0-9]){4}-([0-9]){2}-([0-9]){2}".$needle.":([0-9]){2}:([0-9]){2}$",
> $array_key)) {
> return $array_key;
> # return returnerer og afbryder eksekveringen, så din break linie var
> overflødig
> }
> }
> return false; #hvis ikke der var nogen nøgler der matchede..
> }

Doh ja... det kan jeg godt se. Return kom et lag for langt ind.
Men som du også kunne se ved at jeg havde sat break ind, så var det fordi
jeg ikke var klar over at return også stopper en løkke.

Takker og bukker.

> --
> Mvh. Nezar Nielsen
> http://fez.dk/

Mvh. Jonas



Søg
Reklame
Statistik
Spørgsmål : 177560
Tips : 31968
Nyheder : 719565
Indlæg : 6408945
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste