Map inlezen
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)
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
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;
//=====================
}
}
?>
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
Niemand snapt het?? (ik ook niet) lol
Quote:
Returns an array containing the matched files/directories or FALSE on error.
Misschien moet je dat eerst eens controleren?
Op een gegeven moment doe je:
waar komt die functie "mapopen" vandaan? Het resultaat ervan gaat naar de volgende foreach en die regel geeft een foutmelding.
idd, jan heeft gelijk. Blijkbaar geeft je mapopen() geen array terug.
zal waarschijnlijk ook een eigen functie zijn... maarem kun je die ook posten? En moet dat niet toevallig diropen zijn?
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)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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;
//=====================
}
}
?>
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
Je sluit je else niet af....
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
ik denk dat je in je mapopen het eens zou kunnen proberen met gewoon [] ipv [$i] al denk ik niet dat dat het is...
Wat is daarvan de uitkomst? Bevalt die een beetje?
Ik heb zo het vermoeden dat hij alles in $array['file'] en $array['all'] zet...
$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
Jelmer:
klop je hebt gelijk!!
hij laad alles in file en all maar dan doet de is_dir() het denk ik niet goed!
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.
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 !
Nog even een vraag: hoe kan je sneller dan mijn manier alle mappen achter elkaar inlezen?
Ik heb zo geen kant en klare code, maar het zou misschien sneller/eleganter kunnen met een recursieve functie.
Recursieve?
Code (php)
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 -
Bij mij deed dit het niet, toch maar proberen!
Ik heb het voorelkaar =) heel erg bedankt iedereen (nogmaals)!!