[php] oneindig teken?

Pagina: 1
Acties:
  • 133 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
ik heb een while loop lopen waarbij ondertussen een teller meeloopt als volgt:

code:
1
2
3
4
5
6
7
$i = '0';
while ($i <= $b) {

 blaat blaat blaat

$i++;
}


die $b wordt ge-GET. Alleen nu zijn er situaties waar ik geen waarde aan $b toeken (m.a.w. komt niet in de url voor) op dat moment loopt de while loop dus niet meer (logisch) nu zoek ik dus een functie die maakt dat wanneer $b leeg is deze oneindig gemaakt wordt.. Het mag dan echt oneindig zijn want $b is een ristrictie en die is in dat geval dan niet nodig..

Acties:
  • 0 Henk 'm!

  • TRON
  • Registratie: September 2001
  • Laatst online: 16-09 13:13
Een oneindige loop? Wat wil je daarmee bereiken? Geheugen volpompen?


Zet in je loop: $b = $i + 1;

[ Voor 39% gewijzigd door TRON op 17-02-2004 18:46 ]

Leren door te strijden? Dat doe je op CTFSpel.nl. Vraag een gratis proefpakket aan t.w.v. EUR 50 (excl. BTW)


Acties:
  • 0 Henk 'm!

  • coubertin119
  • Registratie: Augustus 2002
  • Laatst online: 15-09 17:06
Je doet een check of $_GET['b'] geset is, zo ja -> while($i <= $b) en zo nee -> while(true).

En oneindige loops zijn niet leuk.

[ Voor 28% gewijzigd door coubertin119 op 17-02-2004 18:45 ]

Skat! Skat! Skat!


Acties:
  • 0 Henk 'm!

  • 4Real
  • Registratie: Juni 2001
  • Laatst online: 14-09-2024
PHP:
1
2
3
4
for (;;) 
{
    echo "scheef lopen is lijp :P";
}

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
nou die while loop heeft meer ristricties .. dus oneindig zal ie niet doorgaan. Het punt is dat $b niet de beperkende factor mag zijn..

Acties:
  • 0 Henk 'm!

  • blizt
  • Registratie: Januari 2003
  • Laatst online: 11-12-2024

blizt

Wannabe-geek

Zo maar een idee'tje:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
if( empty($_GET['b']) )
{

    #blaat blaat blaat, die je dan 't beste in een functie zet...

}
    
else
{
    for($i = 0; $i <= $b; $i++) 
    {

         #blaat blaat blaat, die je dan 't beste in een functie zet...

    }
}

Uitleg van 't script vind je wel op php.net :)

[ Voor 8% gewijzigd door blizt op 17-02-2004 18:47 ]

United we stand, and divided we fall


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 15:29

crisp

Devver

Pixelated

waarom <= en niet != ?
als je != gebruikt zou je als b niet ingegeven is 'm ook kunnen initialiseren op bv -1 en is je afvraging dus altijd waar ongeacht hoe groot i wordt :)

[ Voor 14% gewijzigd door crisp op 17-02-2004 18:51 ]

Intentionally left blank


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
oke.. volgens mijn overschatten jullie mijn probleem.. ik vroeg me alleen af of er ook een teken voor oneindig was.. nu heb ik gewoon

code:
1
if (!$_GET['b']) $b = '999';


dit werkt prima.. alleen tja.. 999 vin'k niet zo gaaf.. moet gewoon oneindig groot zijn!

Acties:
  • 0 Henk 'm!

  • blizt
  • Registratie: Januari 2003
  • Laatst online: 11-12-2024

blizt

Wannabe-geek

Dan luister je naar mij of crisp ofzo?

United we stand, and divided we fall


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
jep crisp.. denk dat dat em maar worden gaat..

Acties:
  • 0 Henk 'm!

  • KompjoeFriek
  • Registratie: Maart 2001
  • Laatst online: 15-08 22:46

KompjoeFriek

Statsidioot

crisp schreef op 17 februari 2004 @ 18:49:
waarom <= en niet != ?
als je != gebruikt zou je als b niet ingegeven is 'm ook kunnen initialiseren op bv -1 en is je afvraging dus altijd waar ongeacht hoe groot i wordt :)
Ik dacht dat als een Integer groter wordt dan 320000 nogiets dat hij dan weer verder ging bij -320000 nogiets :?
[/verteld op school :X ]

WhatPulse! - Rosetta@Home - Docking@Home


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 15:29

crisp

Devver

Pixelated

een integer is in PHP 32 bits, dus max 2147483648 (signed) of 4294967296 (unsigned)

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • zeroxcool
  • Registratie: Januari 2001
  • Laatst online: 19-09 09:59
KompjoeFriek schreef op 17 februari 2004 @ 18:58:
[...]
Ik dacht dat als een Integer groter wordt dan 320000 nogiets dat hij dan weer verder ging bij -320000 nogiets :?
[/verteld op school :X ]
Klopt, maar doortellen wordt er dan nog wel gewoon gedaan. Je waarde klopt dan niet meer omtrend overflows...

zeroxcool.net - curity.eu


Acties:
  • 0 Henk 'm!

  • supakeen
  • Registratie: December 2000
  • Laatst online: 09-09 14:42
crisp schreef op 17 februari 2004 @ 19:02:
een integer is in PHP 32 bits, dus max 2147483648 (signed) of 4294967296 (unsigned)
Waarschijnlijk haalt je PHP execution time op standaard dat ook niet :)

Acties:
  • 0 Henk 'm!

  • stekkel
  • Registratie: Augustus 2001
  • Laatst online: 17-09 08:05
Er zijn fraaiere methoden om errors af te vangen dan een loop oneindig laten lopen. :-S

Acties:
  • 0 Henk 'm!

  • Spider.007
  • Registratie: December 2000
  • Niet online

Spider.007

* Tetragrammaton

Maargoed.. om de vraag van de topicstarter te beantwoorden: Nee; er is geen teken voor oneindig. Volg de rest van de tips op om alsnog je probleem op te lossen :P

---
Prozium - The great nepenthe. Opiate of our masses. Glue of our great society. Salve and salvation, it has delivered us from pathos, from sorrow, the deepest chasms of melancholy and hate


Acties:
  • 0 Henk 'm!

  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 28-02 22:17
Ik zou je algoritme nog maar eens goe bekijken of. Dit riekt naar ernstig ranzige code, als ik de basis-algoritmetiek die ik heb geleerd zo zie...

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 03:42

.oisyn

Moderator Devschuur®

Demotivational Speaker

Om gewoon even je vraag te beantwoorden ipv je opzet in twijfel te trekken (:Y)), een floating-point getal kan wel degelijk positief of negatief oneindig zijn, alleen laat dat zich niet echt noteren, dus over het algemeen heb je daar een functie voor die zoiets retourneert

In de docs van php zie ik echter niet zoiets... en ook geen functie om een float op te bouwen uit bits...

Dus wellicht dat je het met -log (0) kunt doen, of een deling door 0

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
define ("INF", -log (0));

if (is_infinite (INF))
    echo "INF is infinite";
else
    echo "INF is finite";


$b = INF;
$i = 0;
while ($i < $b)  // altijd true
{
    // ...
}


werkt hier iig wel

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 16:28
De suggestie van blizt is echt te ranzig voor woorden. Dezelfde code op meerdere plekken neerzetten wil je absoluut voorkomen; het is rampzalig om te onderhouden en te debuggen. Crisp's suggestie is wel aardig; zelf zou ik waarschijnlijk kiezen voor iets als:
PHP:
1
while(empty($foo) || ($bar < $foo)) { ... };

Ik vind dat net wat helderder uitdrukken dat het lusje ook altijd doorlopen kan worden. Crisp's suggestie is echter ook niet verkeerd.
crisp schreef op 17 februari 2004 @ 19:02:
een integer is in PHP 32 bits, dus max 2147483648 (signed) of 4294967296 (unsigned)
Een 32-bits signed integer is minimaal -2147483648 en maximaal 2147483647. ;) [/for-the-record]

Acties:
  • 0 Henk 'm!

  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 28-02 22:17
Soultaker's oplossing is het beste. Ik zou hetzelfde doen, als ik al een oneindige loop nodig had. Ik wil je toch aanraden om eens te kijken of je de guard van je loop niet kunt versterken tot iets logischers..

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info

Pagina: 1