打印 1 而不是文件名
printing 1 instead of filenames
我有一些图片集在我指定的 directory.And 我想使用 readdir() function.But 获取他们的名字而不是显示他们的名字,它打印出一系列 1.How这可以正确完成??我也想知道这种行为的原因
$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>';
}
}
运算符优先级。这一行:
while($data=readdir($file)!==false){
正在parsed/executed作为
while ($data = (readdir($file) !== false))
^------------------------^
注意额外的括号。 $data
正在获取 !==
比较的布尔 TRUE 结果。您需要改写为
while(($data = readdir($file)) !== false){
^----------------------^
这将使 $data
获取从 readdir
返回的字符串,然后将该字符串与布尔值 false
.
进行比较
相关文档:http://php.net/manual/en/language.operators.precedence.php
$data=readdir($file)!==false
您正在将布尔结果设置为 $data
。您肯定是想这样做:
($data=readdir($file))!==false
您可能可以使用 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>';
您可以在函数中添加文件类型过滤器,或限制递归深度等。
我有一些图片集在我指定的 directory.And 我想使用 readdir() function.But 获取他们的名字而不是显示他们的名字,它打印出一系列 1.How这可以正确完成??我也想知道这种行为的原因
$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>';
}
}
运算符优先级。这一行:
while($data=readdir($file)!==false){
正在parsed/executed作为
while ($data = (readdir($file) !== false))
^------------------------^
注意额外的括号。 $data
正在获取 !==
比较的布尔 TRUE 结果。您需要改写为
while(($data = readdir($file)) !== false){
^----------------------^
这将使 $data
获取从 readdir
返回的字符串,然后将该字符串与布尔值 false
.
相关文档:http://php.net/manual/en/language.operators.precedence.php
$data=readdir($file)!==false
您正在将布尔结果设置为 $data
。您肯定是想这样做:
($data=readdir($file))!==false
您可能可以使用 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>';
您可以在函数中添加文件类型过滤器,或限制递归深度等。