[PHP] in_array functie werkt niet

Pagina: 1
Acties:
  • 67 views sinds 30-01-2008

  • Enfer
  • Registratie: Februari 2004
  • Laatst online: 10-04 15:19
Heya

ik had even een (denk ik) simpel vraagje, waar ik me zelf nu het hoofd over breek..

ik heb hier de code

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?
$teller         = 0;
$een               = 1;
$array          = array();

while (in_array($een, $array, false))
{
$var              = rand(1, 6);
$array[]            = $var;
$teller         = $teller+1;
}

echo "Totaal gepakte stukken ".$teller."<br>";
?>


maar steeds als ik de code run, staat er : "Totaal gepakte stukken 0", en nooit 1 of 5 ofzo.. Wat doe ik hier fout, en hoe kan ik het goed doen?

[ Voor 6% gewijzigd door Enfer op 24-11-2005 20:25 ]


  • PiweD
  • Registratie: Augustus 2004
  • Niet online

PiweD

Redacteur
in_array returned om te beginnen al false, dus hij voert de while niet verder uit. Dit omdat 1 nog niet in de array zit

so·wie·so (bijwoord) - 1 hoe dan ook


  • Enfer
  • Registratie: Februari 2004
  • Laatst online: 10-04 15:19
Mjah, hij moet de while juist uitvoeren als het vals is.. dus hij moet doorgaan totdat de 1 in de array zit... en dan moet hij zeggen hoevaak het geprobeerd is....
Het leek me zo toch wel mogelijk?
Zoals het er staat lijkt het op: zolang in de array geen 1 voorkomt, de while loop uitvoeren..

[ Voor 20% gewijzigd door Enfer op 24-11-2005 20:30 ]


  • GlowMouse
  • Registratie: November 2002
  • Niet online
Problem? schreef op donderdag 24 november 2005 @ 20:29:
Mjah, hij moet de while juist uitvoeren als het vals is.. dus hij moet doorgaan totdat de 1 in de array zit... en dan moet hij zeggen hoevaak het geprobeerd is....
Het leek me zo toch wel mogelijk?
Dan moet wat achter while staat dus false zijn. Dus moet het tegengestelde true zijn. Dat bereik je door er een uitroepteken voor te plaatsen.

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Problem? schreef op donderdag 24 november 2005 @ 20:29:
Zoals het er staat lijkt het op: zolang in de array geen 1 voorkomt, de while loop uitvoeren..
Die false als 3e argument heeft niets met de while conditie te maken dus je moet echt in_array(x, y, b)==false) doen.

Overigens is dit redelijk basaal, dus ik raad je aan het een en ander te lezen. ;)

[ Voor 12% gewijzigd door Voutloos op 24-11-2005 20:33 ]

{signature}


  • PiweD
  • Registratie: Augustus 2004
  • Niet online

PiweD

Redacteur
dan heb je false verkeerd geplaatst

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?
$teller            = 0;
$een               = 1;
$array             = array();

while (!in_array($een, $array))
{
$var              = rand(1, 6);
$array[]            = $var;
$teller            = $teller+1;
}

echo "Totaal gepakte stukken ".$teller."<br>";
?>


of

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?
$teller            = 0;
$een               = 1;
$array             = array();

while (in_array($een, $array) == false)
{
$var              = rand(1, 6);
$array[]            = $var;
$teller            = $teller+1;
}

echo "Totaal gepakte stukken ".$teller."<br>";
?>

so·wie·so (bijwoord) - 1 hoe dan ook


  • Enfer
  • Registratie: Februari 2004
  • Laatst online: 10-04 15:19
ok hardstikke bedankt allemaal :) Nu kan ik weer verder :)
_/-\o_ _/-\o_

  • InfoTracer
  • Registratie: November 2001
  • Laatst online: 21-04 14:16
while(true)
{
komt in de while
}

while(false)
{
komt hier niet
}

dus

in_array($een, $array, false)
dit is bijna altijd eerst false omdat hij niet altijd gelijk in de array zit
dus dan stopt de while gelijk

ps het laatste argument(false) in in_array hoef je niet mee te gevenen dit hoeft alleen als je hem op true wilt zetten
zie ook php.net

[ Voor 24% gewijzigd door InfoTracer op 24-11-2005 21:17 ]


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

Kom op, hoe in_array werkt staat letterlijk in de manual op PHP.net. Daarnaast is de oplossing voor het probleem gewoon een basaal programmeerconcept, het omdraaien van een booleaanse expressie. Met andere woorden, hier had je prima zelf uit moeten kunnen komen. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.

Pagina: 1

Dit topic is gesloten.