#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 ] : '' ; } + Multi-Zitat Zitieren
#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 ;} + Multi-Zitat Zitieren
#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 ) + Multi-Zitat Zitieren
#5 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 ); } ); + Multi-Zitat Zitieren
#6 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 + Multi-Zitat Zitieren
#7 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). + Multi-Zitat Zitieren