Versio

Map inlezen

Overzicht Reageren

Han eev

Han eev

11/09/2005 15:00:00
Quote Anchor link
Ik heb een functie die geeft deze fouten:

Warning: Invalid argument supplied for foreach() in E:\test\Niet af\PHP verkenner\include-conf.php on line 9

Warning: Invalid argument supplied for foreach() in E:\test\Niet af\PHP verkenner\include-conf.php on line 35

Warning: Invalid argument supplied for foreach() in E:\test\Niet af\PHP verkenner\include-conf.php on line 30

Hij zegt dat de foreach niet goed is maar hij doet wel wat ik wil dus wat betekent deze fout nu?

en is er een snellere manier van alle mappen inlezen?

Script:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<?
function diropen($dir) {
 if (is_dir($dir)) {
 $i=0;
 //=-=-=-=-=-=-=-=-
    foreach (glob($dir."*") as $filename) {
        if(is_dir($filename)) {
        //========================2
        $var =  mapopen($filename."/");
foreach($var['map'] as $name) { // regel 30
 $files['map'][$filename][$name] = $name;
 $files['all'][$filename][$name] = $name;
 //================================3
 $var1 =  mapopen($name."/");
  foreach($var1['map'] as $name1) { // regel 35
   $files['map'][$filename][$name1] = $name1;
 $files['all'][$filename][$name1] = $name1;
 //===============================4
  }
  //=======================
 }
 $files['map'][$filename][] = $filename;
 $files['all'][$filename][] = $filename;
        }
else {
 $files['file'][$i] = $filename;
 $files['all'][$i] = $filename;
        }

    $i++;
    }

    
    return $files;
    
//=====================
}
}

?>
Gewijzigd op 11/09/2005 15:01:00 door Han eev
 
PHP hulp

PHP hulp

25/05/2012 08:45:37
Gesponsorde koppelingen:
BHosted Hosting al vanaf € 1,- per maand

Controleer nu gratis jouw domeinnaam:

  
 
Han eev

Han eev

11/09/2005 15:44:00
Quote Anchor link
Niemand snapt het?? (ik ook niet) lol
 
Jelmer rrrr

Jelmer rrrr

11/09/2005 16:19:00
Quote Anchor link
Quote:
Returns an array containing the matched files/directories or FALSE on error.

Misschien moet je dat eerst eens controleren?
 
Jan Koehoorn

Jan Koehoorn

11/09/2005 16:33:00
Quote Anchor link
Ik zit even in je code te kijken.

Op een gegeven moment doe je:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$var
=  mapopen($filename."/");
?>


waar komt die functie "mapopen" vandaan? Het resultaat ervan gaat naar de volgende foreach en die regel geeft een foutmelding.
 
Jelmer rrrr

Jelmer rrrr

11/09/2005 16:35:00
Quote Anchor link
idd, jan heeft gelijk. Blijkbaar geeft je mapopen() geen array terug.
 
Legolas

Legolas

11/09/2005 18:01:00
Quote Anchor link
zal waarschijnlijk ook een eigen functie zijn... maarem kun je die ook posten? En moet dat niet toevallig diropen zijn?
 
Han eev

Han eev

11/09/2005 20:49:00
Quote Anchor link
mapopen is een functie die een de map alleen opend
ik zal ff het posten

maar let op! ik wil alleen de fout weghebben hij doet het nu ook, maar hij geeft de fout! een fout geeft hij niet zomaar!

edit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?
function mapopen($dir) {
 if (is_dir($dir)) {
 $i=0;
 //=-=-=-=-=-=-=-=-
    foreach (glob($dir."*") as $filename) {
        if(is_dir($filename)) {
            $files['map'][$i] = $filename;
            $files['all'][$i] = $filename;
        }
else {
            $files['file'][$i] = $filename;
            $files['all'][$i] = $filename;
    $i++;
    }

    return $files;
//=====================
}
}

?>
Gewijzigd op 11/09/2005 20:51:00 door Han eev
 
- SanThe -

- SanThe -

11/09/2005 21:05:00
Quote Anchor link
Je sluit je else niet af....
 
Han eev

Han eev

11/09/2005 21:13:00
Quote Anchor link
jah je hebt gelijk! ff testen :P

edit:
1fout minder :D
2 over
Warning: Invalid argument supplied for foreach() in E:\test\Niet af\PHP verkenner\include-conf.php on line 37

Warning: Invalid argument supplied for foreach() in E:\test\Niet af\PHP verkenner\include-conf.php on line 32
Gewijzigd op 11/09/2005 21:16:00 door Han eev
 
Legolas

Legolas

11/09/2005 21:54:00
Quote Anchor link
ik denk dat je in je mapopen het eens zou kunnen proberen met gewoon [] ipv [$i] al denk ik niet dat dat het is...
 
Jelmer rrrr

Jelmer rrrr

11/09/2005 21:59:00
Quote Anchor link
Had je al eens geprobeerd:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo '<pre>', print_r(mapopen('./'), true), '</pre>'; ?>

Wat is daarvan de uitkomst? Bevalt die een beetje?
Ik heb zo het vermoeden dat hij alles in $array['file'] en $array['all'] zet...
 
Legolas

Legolas

12/09/2005 07:13:00
Quote Anchor link
wat jelmer zegt: doe aan het begin van die functie:

$array = array();
$array["all"] = array();
$array["file"] = array();
$array["map"] = array();


EDIT: $array moet $files worden...
Gewijzigd op 12/09/2005 07:15:00 door Legolas
 
Han eev

Han eev

12/09/2005 16:12:00
Quote Anchor link
Jelmer:
Had je al eens geprobeerd:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo '<pre>', print_r(mapopen('./'), true), '</pre>'; ?>

Wat is daarvan de uitkomst? Bevalt die een beetje?
Ik heb zo het vermoeden dat hij alles in $array['file'] en $array['all'] zet...

klop je hebt gelijk!!
hij laad alles in file en all maar dan doet de is_dir() het denk ik niet goed!
 
DrQu

DrQu

12/09/2005 16:22:00
Quote Anchor link
Indien het je alleen om de warnings gaat, dan is dit natuurlijk ook uit te zetten in je php.ini. Dit heeft natuurlijk ook weer zijn nadelen.
 
Han eev

Han eev

12/09/2005 16:30:00
Quote Anchor link
DrQu:
Indien het je alleen om de warnings gaat, dan is dit natuurlijk ook uit te zetten in je php.ini. Dit heeft natuurlijk ook weer zijn nadelen.

Dat wil ik niet, want het moet ook werken zonder errors

en volgens mij heb ik het voorelkaar,
Heel erg Bedankt allemaal !
 
Han eev

Han eev

12/09/2005 17:26:00
Quote Anchor link
Nog even een vraag: hoe kan je sneller dan mijn manier alle mappen achter elkaar inlezen?
 
Jan Koehoorn

Jan Koehoorn

12/09/2005 18:57:00
Quote Anchor link
Ik heb zo geen kant en klare code, maar het zou misschien sneller/eleganter kunnen met een recursieve functie.
 
Han eev

Han eev

12/09/2005 19:44:00
Quote Anchor link
Recursieve?
 
- SanThe -

- SanThe -

12/09/2005 20:07:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
function bla($tel) {
    $tel=$tel+1;
    if($tel < 10) {
        $tel=bla($tel);
    }

    return $tel;
}

?>


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
echo bla(1);
?>


Ik hoop dat jullie het snappen, maar dit is een voorbeeld van recursief programmeren. De functie roept zichzelf aan als $tel < 10 is. Het gevolg is dat de echo als resultaat 10 heeft. Sterker nog: Elke aanroep met een getal kleiner dan 10 geeft 10 als resultaat. Alle aanroepen met 10 of meer geeft het getal terug met 1 verhoogt.

Dit is slechts 1 van de vele mogelijkheden van recursief.

Edit: Klein foutje
Gewijzigd op 12/09/2005 20:08:00 door - SanThe -
 
Han eev

Han eev

12/09/2005 20:17:00
Quote Anchor link
Bij mij deed dit het niet, toch maar proberen!
 
Han eev

Han eev

12/09/2005 20:47:00
Quote Anchor link
Ik heb het voorelkaar =) heel erg bedankt iedereen (nogmaals)!!
 



Overzicht Reageren