[PHP] Array filteren

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • mrbombastic
  • Registratie: Oktober 2002
  • Laatst online: 13-02 21:29
Ik wil de getallen die in de string staan uit de array numbers filteren.
Nou dacht ik dat het zo moest, maar dit werkt niet.

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$string = "3,7,9,22,38";
$numbers = array();
for($i=0;$i<52;$i++) {
  $numbers[$i] = $i+1;
}

function out($var) {
   return (!eregi($var,$string));
}

$numbers = array_filter($numbers, "out");
for($i=0;$i<count($numbers);$i++) {
   echo $numbers[$i]."<br>";
}

Before me there was many, after me there will be none. I'm the one!


Acties:
  • 0 Henk 'm!

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 06-09 00:37

curry684

left part of the evil twins

Gaaf.... 'het werkt niet'. Wat werkt er niet? Heb je al gedebugged? Heb je al eens gekeken waarom het niet werkt? Heb je de relevante docs al doorgelezen over waarom dit absoluut niet kan werken?

Professionele website nodig?


Acties:
  • 0 Henk 'm!

Verwijderd

Ik zal je een hint geven.

Globale en lokale variabelen.

Volgens mij zit de fout daarin.

En er zit nog een fout in heeft te maken met out

[ Voor 22% gewijzigd door Verwijderd op 05-05-2004 16:59 ]


Acties:
  • 0 Henk 'm!

  • mrbombastic
  • Registratie: Oktober 2002
  • Laatst online: 13-02 21:29
Verwijderd schreef op 05 mei 2004 @ 16:57:
Ik zal je een hint geven.

Globale en lokale variabelen.

Volgens mij zit de fout daarin.

En er zit nog een fout in heeft te maken met out
Jep, global $string had ik natuurlijk moeten toevoegen |:(
Het probleem is nu alleen nog dat er teveel waarden worden uitgehaald.
Zo wordt nummer 13 er bijvoorbeeld uitgehaald omdat 3 erin voorkomt, maar dit moet niet.

Before me there was many, after me there will be none. I'm the one!


Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 18-09 16:28

Bosmonster

*zucht*

Is het niet makkelijker om eerst de string even om te zetten in een array (explode(',' $string))

en dan gewoon even door die array te loopen? :)

Lost ook gelijk je probleem op van de 3 en 13 ;)

[ Voor 16% gewijzigd door Bosmonster op 05-05-2004 17:02 ]


Acties:
  • 0 Henk 'm!

  • Tjark
  • Registratie: Juni 2000
  • Laatst online: 18-09 23:26

Tjark

DON'T PANIC

exploden naar een array en dan array_diff gebruiken ipv zelf functietjes gaan hacken.

PHP:
1
2
3
4
5
6
7
$string = "3,7,9,22,38";
$numbers = array(); 
for($i=0;$i<52;$i++) { 
  $numbers[$i] = $i+1; 
} 

$numbers = array_diff($numbers,explode($string))

untested
Bosmonster schreef op 05 mei 2004 @ 17:02:
en dan gewoon even door die array te loopen? :)
foei bosmonster, ken je php functies!

[ Voor 65% gewijzigd door Tjark op 05-05-2004 17:08 ]

*insert signature here


Acties:
  • 0 Henk 'm!

  • mrbombastic
  • Registratie: Oktober 2002
  • Laatst online: 13-02 21:29
Ok, ik heb er nu dit van gemaakt.

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$string = "3,7,9,22,38"; 
$numbers = array(); 

for($i=0;$i<52;$i++) { 
  $numbers[$i] = $i+1; 
} 

$numbers = array_diff($numbers,explode("," , $string));

for($i=0;$i<count($numbers);$i++) {
   $out.= $numbers[$i].($i < count($numbers)-1 ? "," : "");
}

$out = str_replace(",," , "," , $out);
echo $out;

Before me there was many, after me there will be none. I'm the one!


Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 18-09 16:28

Bosmonster

*zucht*

TjarkVerhoeven schreef op 05 mei 2004 @ 17:05:
foei bosmonster, ken je php functies!
Pff.. als ik die berg uit m'n hoofd moet kennen.. heb die regel sneller zelf getypt dan opgezocht :P

Heb al moeite genoeg met het onthouden van de volgorde van de argumenten van de verschillende functies.. want die is ook per functie met de natte vinger in de lucht gekozen ofzo :P

Maar je hebt gelijk.. gebruik dit soort dingen echter zelden :)

[ Voor 8% gewijzigd door Bosmonster op 05-05-2004 17:23 ]


Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 18-09 16:28

Bosmonster

*zucht*

mrbombastic schreef op 05 mei 2004 @ 17:20:
Ok, ik heb er nu dit van gemaakt.

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$string = "3,7,9,22,38"; 
$numbers = array(); 

for($i=0;$i<52;$i++) { 
  $numbers[$i] = $i+1; 
} 

$numbers = array_diff($numbers,explode("," , $string));

for($i=0;$i<count($numbers);$i++) {
   $out.= $numbers[$i].($i < count($numbers)-1 ? "," : "");
}

$out = str_replace(",," , "," , $out);
echo $out;
ehh... naast explode heb je ook implode.. daarmee plak je waarden in een array weer aan elkaar :P

dus implode (',', $numbers) :)

Acties:
  • 0 Henk 'm!

  • Tjark
  • Registratie: Juni 2000
  • Laatst online: 18-09 23:26

Tjark

DON'T PANIC

Bosmonster schreef op 05 mei 2004 @ 17:21:
[...]
Pff.. als ik die berg uit m'n hoofd moet kennen.. heb die regel sneller zelf getypt dan opgezocht :P

Heb al moeite genoeg met het onthouden van de volgorde van de argumenten van de verschillende functies.. want die is ook per functie met de natte vinger in de lucht gekozen ofzo :P
hehe, idd irritant of nu eerst weer de needle komt of de haystack, zeker als je af en toe ook nog eens perl tussendoor doet 8)7

maar nl.php.net is your friend :)

*insert signature here


Acties:
  • 0 Henk 'm!

Verwijderd

Bosmonster schreef op 05 mei 2004 @ 17:21:
[...]
genoeg met het onthouden van de volgorde van de argumenten van de verschillende functies.. want die is ook per functie met de natte vinger in de lucht gekozen ofzo :P
offtopic:
Idd; wie dat bedacht heeft mag zichzelf een 'randomizer van het jaar' button opspelden.

Acties:
  • 0 Henk 'm!

  • mrbombastic
  • Registratie: Oktober 2002
  • Laatst online: 13-02 21:29
Bosmonster schreef op 05 mei 2004 @ 17:22:
[...]


ehh... naast explode heb je ook implode.. daarmee plak je waarden in een array weer aan elkaar :P

dus implode (',', $numbers) :)
Kijk dat scheelt weer een paar regels. :)

PHP:
1
2
3
4
5
6
7
8
9
10
11
$string = "3,7,9,22,38"; 
$numbers = array(); 

for($i=0;$i<52;$i++) { 
  $numbers[$i] = $i+1; 
} 

$out = array_diff($numbers,explode("," ,$string));
$out = implode(",", $out);

echo $out;

[ Voor 7% gewijzigd door mrbombastic op 05-05-2004 17:29 ]

Before me there was many, after me there will be none. I'm the one!

Pagina: 1