我想选择filezise小于100kb的文件形式目录。请检查我的代码它不工作
<?php
ob_start();
$dir = '/home/couponsc/public_html/testfile';
$ext = '.mp3';
$search = $_GET['s'];
$results = glob("$dir/*$search*$ext");
foreach($results as $item)
{
$sizes= filesize($item);
if($sizes < 100);
{
echo $item;
}
}
?>
if($sizes < 100);
if子句->空语句后面有一个分号。
foreach($results as $item) {
$sizes= filesize($item);
if($sizes < 40*1024) {
echo $item, "n";
}
}
或者再加一点spl/lambda fun+递归:
<?php
$path = 'c:/temp';
$it = new RecursiveIteratorIterator(
new RecursiveDirectoryIterator($path),
RecursiveIteratorIterator::LEAVES_ONLY
);
$it = new FooFilterIterator($it, function($e) { return $e->getSize(); }, function($e) { return $e < 40*1024; } );
foreach($it as $f) {
printf("% 6d %sn", $f->getSize(), $f);
}
class FooFilterIterator extends FilterIterator {
protected $getter;
protected $filter;
public function __construct(Iterator $source, $getter, $filter) {
parent::__construct($source);
$this->getter = $getter;
$this->filter = $filter;
}
public function accept() {
$f = $this->filter;
$g = $this->getter;
return $f( $g($this->current()) );
}
}
还有GlobIterator。
filesize()
函数返回字节,而不是千字节,因此您的条件不起作用。
正确的条件是:
if($sizes < 102400);