php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 09-06-2007, 15:06
darki777
 Member
Links : Onlinestatus : darki777 ist offline
Registriert seit: Aug 2006
Beiträge: 150
darki777 ist zur Zeit noch ein unbeschriebenes Blatt
Standard Server hängt sich bei Rekursion auf :/

Hi,
wollte nur mal eben kleines Script schreiben, allerdings
beim Wiederaufruf meiner Funktion, bzw. bei der
Rekursion verabschiedet sich der Server (siehe die
Funktion "getFiles()", hier der Code:

PHP-Code:
<?php
    
function getFiles($myDir="",$myFileSuffix=array("*"),$myDirDepth=0)
    {   
        
$dir=$myDir;
        
$files=glob("$dir{".implode(","$myFileSuffix)."}"GLOB_BRACE);
        
        foreach (
$files as $file)
        {
            if(!
is_dir($file))
            echo 
$file."<br />";
            else
            
getFiles($file,$myFileSuffix,$myDirDepth);
        }  
    }
    
    
getFiles("dir0/",array("*"));
?>
Hab ich da irgendwas übersehen?

Gruß darki
Mit Zitat antworten
  #2 (permalink)  
Alt 09-06-2007, 15:08
penizillin
 PHP Guru
Links : Onlinestatus : penizillin ist offline
Registriert seit: Feb 2004
Beiträge: 10.166
penizillin ist zur Zeit noch ein unbeschriebenes Blatt
Standard

du hast dir $files nicht ausgeben lassen.
Mit Zitat antworten
  #3 (permalink)  
Alt 09-06-2007, 15:11
darki777
 Member
Links : Onlinestatus : darki777 ist offline
Registriert seit: Aug 2006
Beiträge: 150
darki777 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Habs gerade rausgefunden, ich hab ein "/" vergessen.
sollte bei der Rekursion so heißen:
getFiles($file."/",$myFileSuffix,$myDirDepth);

Trotzdem danke fürs Durchlesen, Viele Grüße darki

Geändert von darki777 (09-06-2007 um 15:15 Uhr)
Mit Zitat antworten
  #4 (permalink)  
Alt 09-06-2007, 17:09
darki777
 Member
Links : Onlinestatus : darki777 ist offline
Registriert seit: Aug 2006
Beiträge: 150
darki777 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Habe allerdings nun ein weiteres Problem,
ich möchte unter anderem auch angeben können
wie tief er suchen soll, bzw. die Verzeichnisstiefe.
Allerdings krieg ich bei Übergabe einer temporären
Variable an die rekursive Funktion, um diese für
die Tiefenberechnung zu verwenden, totalen Schrott
zusammen, wie müsste ich am Besten vorgehen?

Meine momentane Funktion:
PHP-Code:
<?php
    
function getFiles($myDir="",$myFileSuffix=array("*"),$myDirDepth=0)
    {   
        
// Reguläre Variablen:
        
$dir=$myDir;
        
$suffix=$myFileSuffix;
        
$files=glob($dir."*");
        
$depth=$myDirDepth;
        
$suffix_container=array();
        
        
// Verzeichnisse/Dateien auslesen:
        
foreach ($files as $counter1 => $file)
        {
            
$basename=basename($file);
            
$thisSuffix=substr($basename,strlen($basename)-3);
            
            foreach (
$suffix as $counter2 => $value)
            {                                          
                if(!
is_dir($file) && ($thisSuffix == $value || $suffix[0] == "*"))
                {
                    echo 
"<br />".$file." :: ".$counter2."<br />";
                }
                else if(
$tmp_depth<$depth)
                {
                    
getFiles($file."/",$myFileSuffix,$myDirDepth);
                }
            }
        }
    }
    
    
// Funktion aufrufen:
    
getFiles("dir0/",array("txt"),2);
?>
Im groß und ganzen weis ich nicht wie ich genau ansetzen
soll um die Tiefe jedes jeweiligen Verzeichnisses/Datei
zu erhalten/abzuspeichern.

Gruß darki
Mit Zitat antworten
  #5 (permalink)  
Alt 09-06-2007, 17:32
3DMax
 PHP Senior
Links : Onlinestatus : 3DMax ist offline
Registriert seit: Jan 2004
Beiträge: 1.916
3DMax ist zur Zeit noch ein unbeschriebenes Blatt
Standard

du musst die tiefe bei jedem aufruf runterzählen und dann einfach nur vergleichen, ob größer 1.
in etwa so:
PHP-Code:
function test_rec($depth)
 {
  echo 
'Aufruf mit depth: '.$depth.'</br>';
  if(
$depth>1)
   
test_rec(--$depth);
 } 
[EDIT] achso, die aktuelle tiefe möchtest du auch haben - kannst du dann so machen:
PHP-Code:
function test_rec($max_depth$current_depth=0)
 {
  echo 
'current depth: '.$current_depth.'</br>';
  if(
$max_depth>$current_depth)
   
test_rec($max_depth, ++$current_depth);
 } 

Geändert von 3DMax (09-06-2007 um 19:25 Uhr)
Mit Zitat antworten
  #6 (permalink)  
Alt 10-06-2007, 13:59
darki777
 Member
Links : Onlinestatus : darki777 ist offline
Registriert seit: Aug 2006
Beiträge: 150
darki777 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Das hab ich anfangs auch gedacht,
allerdings fehlt da doch etwas oder nicht?
z.B. man hat die Verzeichnissstruktur:

dir0
dir0/dir1
dir0/dir2
dir0/dir2/dir4
dir0/dir3

Beim Auslesen von dir0 springt er dann
mal zu dir0/dir2/dir4, erhöht
und springt dann nach dir0/dir3 und hat auf
einmal die falsche Tiefe drin, da er vorher
in einer anderen Tiefe war, nämlich die
von dir0/dir2/dir4, was soll man da tun?

Gruß darki

Geändert von darki777 (10-06-2007 um 14:03 Uhr)
Mit Zitat antworten
  #7 (permalink)  
Alt 10-06-2007, 14:18
TobiaZ
  Moderator
Links : Onlinestatus : TobiaZ ist offline
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.421
Blog-Einträge: 1
TobiaZ befindet sich auf einem aufstrebenden Ast
Standard

eigentlich nicht. Du sollst ja nicht pauschal um 1 erhöhen.

wenn du auf höhe dir0 die tiefe 3 hast, dann sollte das auch bei jedem dir0 so sein.
__________________
ERST LESEN: Unsere Regeln. | Ich hab schon Pferde kotzen sehn!

READ THIS: Strings richtig trennen/verbinden | JOINs, das leidige Thema | Wegwerf E-Mail Adressen

Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
Mit Zitat antworten
  #8 (permalink)  
Alt 10-06-2007, 18:12
3DMax
 PHP Senior
Links : Onlinestatus : 3DMax ist offline
Registriert seit: Jan 2004
Beiträge: 1.916
3DMax ist zur Zeit noch ein unbeschriebenes Blatt
Standard

achso, du hast ja noch eine innere foreach-schleife.
dann müsstest du die tiefe nur für den rekursiven aufruf erhöhen. also rec($depth+1) anstelle von rec(++$depth)
oder du legst vor der schleife eine hilfsvariable an. $new_depth=$depth+1;
Mit Zitat antworten
  #9 (permalink)  
Alt 11-06-2007, 00:06
darki777
 Member
Links : Onlinestatus : darki777 ist offline
Registriert seit: Aug 2006
Beiträge: 150
darki777 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Thx euch beiden, werd ich morgen mal ausprobieren.

[EDIT:] Funktioniert süüüper danke, hatte viel zu
viel schnickschnack reingebaut und ausprobiert,
zu umständlich mal wieder ^^.

Vieleicht braucht es ja mal jemand, hier der Code:
PHP-Code:
<?php
    
function getFiles($myDir="",$myFileSuffix=array("*"),$myDirDepth=0,$tmp_depth=0)
    {   
        
// Reguläre Variablen:
        
$dir=$myDir;
        
$suffix=$myFileSuffix;
        
$files=glob($dir."*");
        
$depth=$myDirDepth;
        
        
// Verzeichnisse/Dateien auslesen:
        
foreach ($files as $counter1 => $file)
        {
            
$basename=basename($file);
            
$thisSuffix=substr($basename,strlen($basename)-3);
            
            foreach (
$suffix as $counter2 => $value)
            {                                           
                if(!
is_dir($file) && ($thisSuffix == $value || $suffix[0] == "*"))
                {
                    echo 
$file." :: ".""."<br />";
                }
                else if(
$tmp_depth<$depth)
                {
                    
getFiles($file."/",$myFileSuffix,$myDirDepth,$tmp_depth+1);
                }
            }
        }
    }
    
    
// Funktion aufrufen (jpg's und txt Dateien suchen, max. Suchtiefe 1):
    
getFiles("dir0/",array("txt","jpg"),1);
    
// Oder getFiles("dir0/"); alle Dateien suchen und unendliche Suchtiefe
?>
Gute Nacht, darki

Geändert von darki777 (11-06-2007 um 00:52 Uhr)
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

ADSMAN V3 - Werbe-Manager ansehen ADSMAN V3 - Werbe-Manager

ADSMAN V3 - mehr als nur ein Bannermanager! Banner, Textanzeigen und PagePeel Manager! Mit ADSMAN PRO haben Sie die Marketinglösung für eine effektive und effiziente Werbeschaltung mit messbaren Ergebnissen. Unterstützt werden Bannerformate in beliebi

25.10.2018 virtualsystem | Kategorie: PHP/ Bannerverwaltung
PHP News und Artikel Script V2

News schreiben, verwalten, veröffentlichen. Dies ist jetzt mit dem neuen PHP News & Artikel System von virtualsystem.de noch einfacher. Die integrierte Multi-User-Funktion und der WYSIWYG-Editor (MS-Office ähnliche Bedienung) ermöglichen...

25.10.2018 virtualsystem | Kategorie: PHP/ News
Top-Side Guestbook

Gästebuch auf Textbasis (kein MySQL nötig) mit Smilies, Ip Sperre (Zeit selbst einstellbar), Spamschutz, Captcha (Code-Eingabe), BB-Code, Hitcounter, Löschfunktion, Editierfunktion, Kommentarfunktion, Kürzung langer Wörter, Seiten- bzw. Blätterfunktion, V

22.10.2018 webmaster10 | Kategorie: PHP/ Gaestebuch
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 00:23 Uhr.