为了账号安全,请及时绑定邮箱和手机立即绑定

为啥报错,说$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));


正在回答

6 回答

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

0 回复 有任何疑惑可以回复我~
#1

jking54 提问者

非常感谢!
2015-07-13 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~
#1

jking54 提问者

确实是这里的错
2015-07-13 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~
#1

jking54 提问者

没有单独的声明,PHP可以用这种用法,网上说是要在php.ini中设置error_reporting=E_ALL &~ E_NOTICE或用error_reporting(E_ALL &~ E_NOTICE)或error_reporting(0)这几种方法。但是我用了之后,虽然不会再报NOTICE,但是还是出不来正确的运行结果。
2015-07-12 回复 有任何疑惑可以回复我~

<?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));


0 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~
#1

jking54 提问者

好的,谢谢了。代码已经贴出来。
2015-07-11 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

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

我要回答 关注问题
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号