[PHP] Array Abfrage

Dieses Thema im Forum "Webentwicklung" wurde erstellt von Spo0n22, 3. Dezember 2011 .

Schlagworte:
  1. 3. Dezember 2011
    Array Abfrage

    Hey hey RR'ler,

    ich habe eine Frage zu PHP Array Abfrage.

    Undzwar habe ich einen Ordner mit den Datein:

    grab_xxx.html
    link_xxx.html

    den Ordner rufe ich mit der folgenden Abfrage ab
    PHP:
    $datein  readdir ( opendir ( 'cache/' ));
    Dieser Array gibt dann alle Datein aus dem Ordner aus.

    Nun möchte ist das die Datein die mit grab_ anfangen rausfiltern. Die Abfrage sollte in einer Abfrage gemacht sein. (For-Schleife)

    Oder soll der Array in der For-Schleife gefiltert werden?

    PHP:
    $datein  readdir ( opendir ( 'cache/' ));

    for(
    $i  0 $i  count ( $datein );  $i ++){

    $datei  explode ( '_' $datein [ $i ]);

    echo (
    $datei [ 0 ] ==  'grab' ) ?  $datein [ $i ] :  '' ;

    }
     
  2. 3. Dezember 2011
    AW: Array Abfrage

    PHP:
    $files  readdir ( opendir ( 'cache/' )); 

    foreach(
    preg_grep ( "/grap_.*\.html/i" $files ) as  $file )
       echo 
    $file ;
    Ungetestet, müsste aber so in etwa funzen..

    Oder

    PHP:
    $files  readdir ( opendir ( 'cache/' )); 

    foreach(
    $files  as  $file ) {
        if(
    strstr ( $file "grab_" ))
            echo 
    $file ;
    }
     
  3. 3. Dezember 2011
    AW: Array Abfrage

    Oder einfach

    Code:
    $files = glob('cache/grab_*.html');
    print_r($files):
    Code:
    Array
    (
     [0] => cache/grab_334123.html
     [1] => cache/grab_a845c1.html
     [2] => cache/grab_f81813.html
    )
    
     
  4. 3. Dezember 2011
    AW: Array Abfrage

    ne, der ist fehl am platz. MArc hat das beste beispiel schon genannt.
    wenn man dennoch einen regulären ausdruck verwenden möchte, dann bietet sich array_filter besser an.

    PHP:
    $files  array_filter (
      
    scandir ( 'pfad' ), 
      function(
    $file ) { 
        return 
    preg_match ( '/ausdruck/' $file ); 
      }
    );
     
  5. 4. Dezember 2011
    AW: Array Abfrage

    Habe es nun mit der glob() function gemacht.

    Die anderen functionen haben auch gut geklappt.
    Gibt es eigentlich große unterschiede in der Perfomance?

    Zwischen:
    glob und array_filter
     
  6. 4. Dezember 2011
    AW: Array Abfrage

    glob = nativ

    d.h. glob ist um einiges schneller als scandir/array_filter, unterstützt aber keine regulären ausdrücke, sondern "nur" bestimmte suchmuster.

    zudem liest scandir zuerst alle dateien ein und array_filter arbeitet diese dann ab, wo hingegen glob nur die dateien ausliest, die auf das suchmuster passen.

    ein wenig performater wäre opendir/readdir statt scandir, wobei hier merkbare unterschiede erst bei sehr sehr vielen dateien auffallen würden (speicherverbrauch).
     
  7. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.