[PHP] 2 array's vergelijken

Pagina: 1
Acties:

  • froggie
  • Registratie: November 2001
  • Laatst online: 20-11-2024
Ik heb 2 array's:
code:
1
2
$array_cijfer = array(1, 0, 1, 1, 0);
$array_letters = array(a, b, c, d, e);

Nou wil ik deze 2 array's met elkaar gaan vergelijken. Er moet dus gekeken worden of er bij de letters 0 of 1 hoort. Wanneer een letter 0 is moet deze letter uit de array verwijderd worden (of een 3e array aangemaakt worden met alleen de letters die positief zijn). Hoe pak ik dit het handigst aan? Ik ben er al de hele morgen mee bezig maar krijg het maar niet voor elkaar.

bvd!

Verwijderd

http://www.php.net/manual/en/function.array-diff.php

edit: hmm denk toch iets te snel... nog ff de vraag goed lezen :o

edit: gaar browser cacht de pagina's bij mij, maar goed..

dit kan denk ik niet met die functie.
je moet gewoon een loopje gebruiken om door 1 array heen te lopen. Dan check je of die positie in de andere array 1 of 0 is, desnoods zet je dat in een nieuwe array.

zoek maar op :
www.php.net/each

  • froggie
  • Registratie: November 2001
  • Laatst online: 20-11-2024
Thnx!
Maar zou je misschien een kleine uitleg kunnen geven? Want ik snap niet veel van de uitleg die ze op php.net.

Verwijderd

wat je kan doen is eerst de letter array doorlopen en bij de bijhorende plek in de getallen array zoeken
dus bv:
code:
1
2
3
4
5
for( $i = 0 ; $i < count( $letterarray ) ; $i++ ){
   if( $cijferarray[$i] == 0 ){
    echo "deze moet ik deleten";
   }
}

volgens mij moet dit lukken

  • Grum
  • Registratie: Juni 2001
  • Niet online
zo doet men dat:
PHP:
1
<?$array_cijfer = array(1, 0, 1, 1, 0);$array_letters = array(a, b, c, d, e);$i = 0; foreach($array_cijfer as $tmp){   if(!$tmp)      array_splice($array_letters, $i, 1);   else      $i++;} print_r($array_letters);?>

  • froggie
  • Registratie: November 2001
  • Laatst online: 20-11-2024
Op maandag 18 maart 2002 15:49 schreef Grum het volgende:
zo doet men dat:
PHP:
1
<?een stukkie code?>
Dit geeft mij een array met alleen de letters die positief zijn :?

edit: oops, was de layout aan het verkloten met deze post

Verwijderd

probeer het for looptje eens, ik vind dat makkelijker.
ieder zijn smaak :)

  • Grum
  • Registratie: Juni 2001
  • Niet online
geef maar werkende code zoals je die daar nu hebt staan die ook echt het item delete.

leuke uitdaging (wel een kleine)

  • froggie
  • Registratie: November 2001
  • Laatst online: 20-11-2024
Op maandag 18 maart 2002 15:53 schreef IceFlame het volgende:
probeer het for looptje eens, ik vind dat makkelijker.
ieder zijn smaak :)
* froggie snapt nog steeds niet hoe die for loops werken :(

  • Grum
  • Registratie: Juni 2001
  • Niet online
Op maandag 18 maart 2002 15:51 schreef Froggie het volgende:
Dit geeft mij een array met alleen de letters die positief zijn :?

edit: oops, was de layout aan het verkloten met deze post
Dit doet precies wat jij zegt/wilt.

Het delete de letters waar in de andere array (bij dezelfde index) 0 staat.

[edit]
$array_letters = array(a, b, c, d, e);

geeft btw errors ... a,b,c,d,e zijn geen constants .. dus er moeten quotes omheen.

Verwijderd

Op maandag 18 maart 2002 15:55 schreef Froggie het volgende:

[..]

* froggie snapt nog steeds niet hoe die for loops werken :(
[url="htp://www.php.net/for"]for[/url] werkt dus zo:

($teller is de teller die bij houd hoevaak for is uitgevoerd)
PHP:
1
<?for($teller=0; $teller < 100; $teller++){  echo "$teller<br>\n";}?>

Wat hier dus staat is
code:
1
2
van teller = 0 tot teller < 100; tel 1 bij teller op)
laat teller <br>\n zien

Lijkt me voor zich spreken.

  • froggie
  • Registratie: November 2001
  • Laatst online: 20-11-2024
Op maandag 18 maart 2002 15:59 schreef daniel_hoenderdos het volgende:

[..]

[url="htp://www.php.net/for"]for[/url] werkt dus zo:

($teller is de teller die bij houd hoevaak for is uitgevoerd)
PHP:
1
<?for($teller=0; $teller < 100; $teller++){  echo "$teller<br>\n";}?>

Wat hier dus staat is
code:
1
2
van teller = 0 tot teller < 100; tel 1 bij teller op)
laat teller <br>\n zien

Lijkt me voor zich spreken.
Hmm... 't wordt al duidelijker, bedankt!

Verwijderd

np

Verwijderd

code:
1
2
3
4
5
6
7
8
9
$letterarray = array(a, b, c, d, e);
$cijferarray = array(1, 0, 1, 1, 0);

for( $i = 0 ; $i < count( $letterarray ) ; $i++ ){
   if( $cijferarray[$i] == 0 ){
    array_splice($letterarray, $i, 1);
   }
}
print_r( $letterarray );

geeft:
Array ( [0] => a [1] => c [2] => d [3] => e )

Grum nu ben ik inspired, ben niet bekend met splice dus whelp :P

  • froggie
  • Registratie: November 2001
  • Laatst online: 20-11-2024
Op maandag 18 maart 2002 15:56 schreef Grum het volgende:

[..]

Dit doet precies wat jij zegt/wilt.

Het delete de letters waar in de andere array (bij dezelfde index) 0 staat.

[edit]
$array_letters = array(a, b, c, d, e);

geeft btw errors ... a,b,c,d,e zijn geen constants .. dus er moeten quotes omheen.
Bedankt voor het stukkie code, het werkt perfect op deze manier.

Verwijderd

Op maandag 18 maart 2002 16:13 schreef IceFlame het volgende:
code:
1
een stukkie code
Doe niet in je for loop een count().
Doe die ervoor. Dat scheelt weer parse tijd.
PHP:
1
<?$blaat = count($letterarray);for($i=0;$i<$blaat;$i++){      if($cijferarray[$i] == 0)array_splice($letterarray, $i, 1);   }?>

Dus

  • Grum
  • Registratie: Juni 2001
  • Niet online
dat gaat dus fout ... zeker niet getest he >:)
Pagina: 1