问答详情
源自:1-2 获取首层目录信息

为啥报错,说$arr未定义(return $arr;)?

<?php

//打开指定目录

/**

 * 遍历目录函数,只读取目录中的最外层的内容

 * @param string $path

 * @return array

 */

function readDirectory($path){

$handle=opendir($path);   //打开指定目录

while($item=readdir($handle)!==false){

//.和..2个特殊目录,.表示当前目录,..表示上级目录

if(($item!=".") && ($item!="..")){

if(is_file($path."/".$item)){

$arr['file'][]=$item;

}

if(is_dir($path."/".$item)){

$arr['dir'][]=$item;

}

else {echo "empty";}

}

}

closedir($handle);

return $arr;

}

$path="file";

print_r(readDirectory($path));


提问者:jking54 2015-07-11 13:37

个回答

  • qq__554
    2015-07-13 16:54:26
    已采纳

    因为括号的问题  你存储到  $arr里的 数据全是 boolean  类型的数据  导致报错了

  • ttpo
    2016-11-28 08:29:19

    在函数开头定义个$arr=[];就算file目录下无文件都可以返回个空数组,不会报错.

  • qq__554
    2015-07-13 16:53:06

    你代码写错了while (($pathname = readdir($handle)) !== false)

  • 乔帮主
    2015-07-12 20:46:49

    想问你一下,$arr['file'][]=$item;这里面的$arr数组的定义在哪里呢?

  • jking54
    2015-07-11 22:05:30

    <?php

    //打开指定目录

    /**

     * 遍历目录函数,只读取目录中的最外层的内容

     * @param string $path

     * @return array

     */

    function readDirectory($path){

    $handle=opendir($path);   //打开指定目录

    while($item=readdir($handle)!==false){

    //.和..2个特殊目录,.表示当前目录,..表示上级目录

    if(($item!=".") && ($item!="..")){

    if(is_file($path."/".$item)){

    $arr['file'][]=$item;

    }

    if(is_dir($path."/".$item)){

    $arr['dir'][]=$item;

    }

    else {echo "empty";}

    }

    }

    closedir($handle);

    return $arr;

    }

    $path="file";

    print_r(readDirectory($path));


  • 乔帮主
    2015-07-11 18:29:46

    你把代码贴出来给我们看看撒!以后这样的问题,先把代码贴出来再问呢。