我在我指定的目录中有一些图像集。我希望使用readdir()函数获取它们的名称。但是它不是显示它们的名字,而是打印出一系列的1.如果这可以正确完成?我也想知道这种行为的原因
$dir='c:/xampp/htdocs/practice/haha/';
echo getcwd().'</br>';
if(is_dir($dir)){
echo dirname($dir);
$file=opendir($dir);
while($data=readdir($file)!==false){
echo $data.'</br>';
}
}
答案 0 :(得分:4)
运营商优先权。这一行:
while($data=readdir($file)!==false){
正在被解析/执行为
while ($data = (readdir($file) !== false))
^------------------------^
请注意额外的括号。 $data
获取!==
比较的布尔值TRUE结果。你需要重新开始
while(($data = readdir($file)) !== false){
^----------------------^
这将使$data
获取从readdir
返回的字符串,然后该字符串将与布尔值false
进行比较。
相关文档:http://php.net/manual/en/language.operators.precedence.php
答案 1 :(得分:1)
您可能可以使用scandir
function list_directory($directory) {
$result = new stdClass();
$result->path = $directory;
$result->children = array();
$dir = scandir($directory);
foreach($dir as $file) {
if($file == '.' || $file == '..') continue;
$result->children[] =
!is_dir($directory.$file) ? $file :
list_directory($directory.$file.'/');
}
return $result;
}
$dir='c:/xampp/htdocs/practice/haha/';
$result = list_directory($dir);
echo '<code><pre>';
var_dump($result);
echo '</pre></code>';
您可以在函数中添加文件类型的过滤器,或者限制递归深度等。
答案 2 :(得分:0)
$data=readdir($file)!==false
您将布尔结果设置为$data
。当然你打算这样做:
($data=readdir($file))!==false