1

これは、フォルダからすべてのファイルを取得し、画像ファイルを除外して表示するスクリプトの一部です。拡張子によるフィルタリングを開始する前に、「thumb」という単語を含む$names変数のインスタンスを削除したいと思います。

sort($names);


$tempvar=0;
for ($i=0;$names[$i];$i++){
$ext=strtolower(substr($names[$i],-4));
if ($ext==".jpg"||$ext==".gif"||$ext=="jpeg"||$ext==".png"){$names1[$tempvar]=$names[$i];$tempvar++;}
}
4

2 に答える 2

0
$tempvar=0;
for ($i=0;$names[$i];$i++){

  if(strpos($names[$i], 'thumb') === false){

    $ext=strtolower(substr($names[$i],-4));
    if ($ext==".jpg"||$ext==".gif"||$ext=="jpeg"||$ext==".png"){ 
        $names1[$tempvar]=$names[$i];$tempvar++;}
    }
  }
}
于 2012-12-04T11:25:07.327 に答える
0

代わりに(より単純な)foreachを使用できるforループがあるようです。単純なarray_filterを使用していない理由は何ですか?これにより、コードが読みやすくなります(とにかく、私にとっては):

<?php
$names = array(
    'foo.thumb.jpg',
    'bar.jpg',
    'bar.THUMB.jpg',
    'qux.png',
    'README.TXT'
);

$extensions = array( 'jpg', 'gif', 'jpeg', 'png' );

$filtered = array_filter( $names, function( $name ) use ( $extensions ) {
    if( stripos( $name, 'thumb' ) !== false ) {
        return false;
    }
    return in_array( pathinfo( $name, PATHINFO_EXTENSION ), $extensions );
});

var_dump( $filtered );

また、の代わりにsubstr($names[$i], -4 )、pathinfoを使用することを選択しました。このように、拡張子は任意の長さにすることができ、常に正しく返されます。

于 2012-12-04T11:37:07.963 に答える