Avatar billede daniel_d Nybegynder
21. marts 2007 - 02:39 Der er 9 kommentarer og
1 løsning

hvordan tvinge en løkke til at køre indtil betingelse er opfyldt

Som subject lyder, hvordan kan man så tvinge en løkke til at køre indtil en betingelse er opfyldt, eller hvis output ikke er "godt nok", så "genstarte" scriptet...

Jeg har et "pacthwork" af et script der indhenter en masse info ind og behandler det, men nogle gange fejler scriptet og får ikke hentet al info ind. Jeg ved hvornår den går galt, men vil så tvinge scriptet til at køre en gang til indtil "betingelsen" er opfyldt.

Hvordan skal den drejes?
Avatar billede radion Nybegynder
21. marts 2007 - 07:03 #1
while(1<2){


if($betingelse=='ok'){
break;
}
}
Avatar billede radion Nybegynder
21. marts 2007 - 07:04 #2
med en while(1<2) sørger du for at løkken kører uendeligt, eller indtil den får et break;
Avatar billede showsource Seniormester
21. marts 2007 - 08:08 #3
umiddelbart skal du vel ikke la' en løkke køre uendeligt, fordi det den "finder" ikke opfylder en eller var.

Et eller andet sted må du finde ud min. hvor antal vars du forventer skal opfyldes,
og ud fra det lave din loop
Avatar billede showsource Seniormester
21. marts 2007 - 08:11 #4
eehhmm, vis lidt kode for hvornår det går galt.....
Avatar billede daniel_d Nybegynder
21. marts 2007 - 10:20 #5
Radion-> Det virker som sådan efter hensigten, men står nu med et problem med 2 funktioner der er inde i min while løkke som giver mig fejl hvis løkken kører mere end en gang.

fejlen er f.eks. Cannot redeclare analyze()

funktionen ser således ud:

    function Analyze($str, $degree) {
        $tree = array( "str" => "" );
   
        $len = strlen($str);
        for ($i = $degree; $i <= $len; $i++) {
            $p =& $tree;
            for ($pos = $i-$degree; $pos < $i-1; $pos++) {
                $ch = substr($str, $pos, 1);
                $p["str"] .= $ch;
                if (!isset($p[$ch]))
                  $p[$ch] = array( "str" => "" );
                $p =& $p[$ch];
            }
            $ch = substr($str, $i-1, 1);
            $p["str"] .= $ch;
        }
        return $tree;
    }
Avatar billede daniel_d Nybegynder
21. marts 2007 - 10:26 #6
Jeg er da også en knold.
Smed funktionerne uden for while sætningen, og så spiller det :)
Avatar billede radion Nybegynder
21. marts 2007 - 14:41 #7
fint fint :) men, ja, som showsource også påpeger, så kan det være uhensigtsmæssigt, at køre en løkke uendeligt som udgangspunkt.. det er den slags nedbrændte servere opstår ud af ;)
Avatar billede daniel_d Nybegynder
21. marts 2007 - 15:11 #8
Ja klart nok :)
Tror også jeg smider en max på, så jeg laver if om til en for løkke...
Smid et svar, så kaster jeg nogle points efter dig :)
Avatar billede radion Nybegynder
21. marts 2007 - 17:04 #9
Skydeskive :)
Avatar billede sostack Nybegynder
16. april 2007 - 13:44 #10
hvad er der galt med:
while('ok' != $betingelse){

}
???
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester