login  Naam:   Wachtwoord: 
Registreer je!
 Forum

[opgelost] in_array

Offline tswebdev - 26/01/2007 15:06 (laatste wijziging 26/01/2007 17:18)
Avatar van tswebdevPHP interesse Ik heb dus een scriptje gemaakt dat een lijst weergeeft van alles bestanden die in een map staan. Nu wil ik alleen de bestanden laten weergeven die niet in de array paginas staan. Ik heb al iets gemaakt maar ik krijg telkens weer een foutmelding.
Kan iemand me hiermee helpen?

Code:
  1. <?php
  2. $paginas = array("home.php", "medewerkers.php", "contact.php");
  3.  
  4. if ($handle = opendir('../docs/')) {
  5.  
  6. while (false!==($file = readdir($handle))) {
  7.  
  8. if ($file != "." && $file != ".." && $file != "_notes" && in_array($file, $paginas, false)) {
  9. echo '<a href="?pagina=paginas/bewerken&p='.$file.'">'.$file.'</a><br/>';
  10. }
  11.  
  12. }
  13.  
  14. closedir($handle);
  15. }
  16. ?>

Foutmelding:
Warning: in_array() [function.in-array]: Wrong datatype for second argument

10 antwoorden

Gesponsorde links
Offline Ibrahim - 26/01/2007 15:20
Avatar van Ibrahim PHP expert De 2e argument is waarschijnlijk geen array. In plaats van meteen een topic te posten moet je eerst debuggen. Kijk eerst naar de error. Probeer dan de variabele die de error veroorzaakt af te drukken met var_dump/print_r om te zien of het de juiste waarde/type heeft.

Dan zonodig verbeteren, als het dan niet werkt moet je pas een topic posten 
Offline Thomas - 26/01/2007 15:21
Avatar van Thomas Moderator Hmm, probeer het eens zonder derde parameter?
Offline Gerard - 26/01/2007 15:22
Avatar van Gerard Ouwe rakker De PHP.net: in_array functie geeft een boolean terug. Hij geeft dus true terug als de needle gevonden is in de haystack (jouw woord in de array).

Wat je dus even moet doen (sowieso om alles duidelijk te houden) is die ".", ".." en "_notes" ook toevoegen aan de array en dan als volgt de if opbouwen:
  1. <?php
  2. if (!in_array($file, $paginas, false)) {
  3. echo 'info hier';
  4. }
Offline Grayen - 26/01/2007 15:24
Avatar van Grayen PHP ver gevorderde
  1. in_array($file, $paginas, [b]false[/b])

waarom zet jij als derde parameter false neer, op php.net wordt alleen gezegd dat je hem true moet zetten als je ook op het type wilt controleren, dus false hoef je daar helemaal niet neer te zetten. en probeer zoals siliecom14 al zegt te controleren of $paginas wel een array is.
Offline Thomas - 26/01/2007 15:40
Avatar van Thomas Moderator Euh: Dat stelde ik al voor, en volgens mij is $paginas wel een array (zie regel 2?).
Offline ikkedikke - 26/01/2007 15:58
Avatar van ikkedikke PHP expert misschien kan je beter andersom checken:
De array nalopen op bestanden en dan kijken of die bestanden bestaan.
Offline Rik - 26/01/2007 16:01 (laatste wijziging 26/01/2007 16:02)
Avatar van Rik Gouden medailleGouden medaille

Crew algemeen
Citaat:
Nu wil ik alleen de bestanden laten weergeven die niet in de array paginas staan.
Waarom zet je hem dan niet op !in_array(...)?

Edit:
Of probeer je met die derde false param het resultaat van in_array om te keren?  
Offline tswebdev - 26/01/2007 16:16 (laatste wijziging 26/01/2007 16:52)
Avatar van tswebdev PHP interesse Edit: Alles werkt
Offline Thomas - 26/01/2007 16:54
Avatar van Thomas Moderator o p l o s s i n g ?
Offline tswebdev - 26/01/2007 17:17
Avatar van tswebdev PHP interesse
  1. <?php
  2. $paginas = array("_notes", ".", "..", "home.php", "medewerkers.php", "artiesten.php", "contact.php", "agenda.php", "reports.php", "pictures.php", "gastenboek.php", "chatbox.php", "forum.php");
  3. if ($handle = opendir('../docs/')) {
  4.  
  5. while (false!==($file = readdir($handle))) {
  6.  
  7. if (!in_array($file, $paginas)) {
  8. echo '<a href="?pagina=paginas/bewerken&p='.$file.'">'.$file.'</a><br/>';
  9. }
  10.  
  11. }
  12.  
  13. closedir($handle);
  14. }
  15. ?>
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.208s