login  Naam:   Wachtwoord: 
Registreer je!
 Forum

readdir () array lezen buiten while? (Opgelost)

Offline Nrzonline - 26/02/2007 13:14 (laatste wijziging 26/02/2007 13:18)
Avatar van NrzonlinePHP ver gevorderde Hey SiMa Leute,

Ik ben mij eens gaan verdiepen in de readdir () function. Alleen gaat dit niet zo heel erg lekker. (Ik heb raar genoeg nog nooit readdir gebruikt )

  1. <?PHP
  2. $handle=opendir('languages');
  3. while (false!==($file = readdir($handle)))
  4. {
  5. if ($file != "." && $file != "..")
  6. {
  7. $sFilesClean = str_replace (".lang.php", "", $file);
  8. $aFiles = explode (",", $sFilesClean);
  9. for ($i=0; $i < count($aFiles); $i++)
  10. {
  11. echo $aFiles[$i] . "<br />";
  12. }
  13. }
  14. }
  15. ?>


Nu wil ik mijn $aFiles array buiten de while gaan gebruiken,
maar dan krijg ik enkel de laatste uit de array te zien. Binnen
de while werkt deze echter perfect? (Dus de for ($i ....) en dan de array weergeven werkt wel. Krijg mooi alle beschikbare talen op een rijtje). Doe ik dit buiten de while, werkt hij niet meer.

Iemand een idee hoe dit kom? Ik vat het namelijk niet helemaal meer (Zal wel weer iets doms zijn, maarja..)

Bedankt alvast!

7 antwoorden

Gesponsorde links
Offline TotempaaltJ - 26/02/2007 13:19
Avatar van TotempaaltJ PHP interesse Ik heb een programma gemaakt, die dit gebruikt, alleen gebruik ik voor de
  1. <?php
  2. if ($file != "." && $file != "..")

'functie' iets anders, namelijk:
  1. <?php
  2. if(substr($file, 0, 1) == "." || $file == "..") continue;
Offline Nrzonline - 26/02/2007 13:21 (laatste wijziging 26/02/2007 13:23)
Avatar van Nrzonline PHP ver gevorderde Hmz, nog altijd hetzelfde resultaat. Binnen de while werkt hij, buiten de while nog steeds niet 

  1. <?PHP
  2. $handle=opendir('languages');
  3. while (false!==($file = readdir($handle)))
  4. {
  5. if(substr($file, 0, 1) == "." || $file == "..") continue;
  6.  
  7. $sFilesClean = str_replace (".lang.php", "", $file);
  8. $aFiles = explode (",", $sFilesClean);
  9.  
  10. # Deze for()-loop met de array werkt prima
  11. for ($i=0; $i < count($aFiles); $i++)
  12. {
  13. echo $aFiles[$i] . "<br />";
  14. }
  15. }
  16.  
  17. # Deze for()-loop met de array NIET
  18. for ($i=0; $i < count($aFiles); $i++)
  19. {
  20. echo $aFiles[$i] . "<br />";
  21. }
  22.  
  23. # Sessions helpen ook niet :x
  24.  
  25. ?>


Of pas ik het niet goed toe? Kan namelijk ook nog hè 
(ben ondertussen even eten)
Offline TotempaaltJ - 26/02/2007 13:27
Avatar van TotempaaltJ PHP interesse Het was niet echt een oplossing, maar ik dacht: Misschien helpt het.
Je past het goed toe. Ik kan de fout niet zien. 
Offline Rik - 26/02/2007 13:30
Avatar van Rik Gouden medailleGouden medaille

Crew algemeen
Je overschrijft steeds $aFiles, vind je het gek dat hij alleen de laatste laat zien. 

Maak van "$aFiles = explode (",", $sFilesClean);" dit "$aFiles[] = explode (",", $sFilesClean);", en zet "$aFiles = array()" bovenaan je script.

Als je die eerste for-lus er uit haalt zou je steeds ArrayArrayArrayArrayArrayArrayArrayArray als output moeten krijgen, omdat hij dan steeds een array toevoegt aan $aFiles. Gebruik print_r in de tweede for-lus om te laten zien wat er in staat.
Offline Nrzonline - 26/02/2007 14:38
Avatar van Nrzonline PHP ver gevorderde
  1. <?PHP
  2. $aFiles = array ();
  3. $handle=opendir('languages');
  4. while (false!==($file = readdir($handle)))
  5. {
  6. if(substr($file, 0, 1) == "." || $file == "..") continue;
  7. $sFilesClean = str_replace (".lang.php", "", $file);
  8. $aFiles[] = explode (",", $sFilesClean);
  9. }
  10.  
  11. for ($i=0; $i < count ($aFiles); $i++)
  12. {
  13. echo $aFiles[$i] . "<br />";
  14. }
  15. ?>


Nu heb ik dus dit. Maar het effect wat ik nu dus krijg is een array in een array.

print_r ($aFiles) levert namelijk dit op.
Array ( [0] => dutch ) Array ( [0] => english ) Array ( [0] => belgium )

Maar wat het moet zijn is
array ( [0] => dutch [1] => english [2] => belgium )
Hoe zorg ik ervoor bij dit stukje script nou dat ik een array zoals deze krijg?
Offline Rik - 26/02/2007 14:53
Avatar van Rik Gouden medailleGouden medaille

Crew algemeen
  1. $aFiles[] = explode (",", $sFilesClean);

==>
  1. $aFiles[] = current(explode (",", $sFilesClean));
Offline Nrzonline - 26/02/2007 14:57
Avatar van Nrzonline PHP ver gevorderde Ja, dit werkt perfect! (weer wat geleerd, kende current() functie niet eens )

Thnx boukefalos! 
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.287s