我有以下代码。
if ($_GET['dir']!=''){
$checkifhasfiles = array_diff(scandir($_GET['dir']), array(".","..","error_log"));
foreach($checkifhasfiles as $cihf){
if(is_file($_GET['dir'].'/'.$cihf)){
echo "Ok, the folder has files";
}
}
}
如果文件夹包含one
个文件,我只想显示only
消息。问题是,正如预期的那样,foreach正在为文件夹包含的每个文件“回显”一条消息。
我怎样才能“绕过”那个,如果文件夹中有文件,只打印一条消息?
谢谢和最好的问候
顺便说一句 - 对于缩进感到抱歉,我正在写在记事本上,因为我不在家,而且它不是完全缩进的
答案 0 :(得分:2)
如果我理解正确,你不只是想在第一个找到的文件上回显,但如果文件夹包含ONLY文件(即没有子文件夹)。如果这是真的,这将有效:
if (isset($_GET['dir']) && !empty($_GET['dir']))
{
$checkifhasfiles = array_diff(scandir($_GET['dir']), array(".","..","error_log"));
$i = 0;
foreach($checkifhasfiles as $cihf)
{
if(is_file($_GET['dir'].'/'.$cihf))
{
$i++;
}
}
if ( count($checkifhasfiles) === $i )
{
echo "Ok, the folder has files";
}
}
答案 1 :(得分:1)
你可以试试“休息”吗? http://php.net/manual/en/control-structures.break.php
if ($_GET['dir']!=''){
$checkifhasfiles = array_diff(scandir($_GET['dir']), array(".","..","error_log"));
foreach($checkifhasfiles as $cihf){
if(is_file($_GET['dir'].'/'.$cihf)){
echo "Ok, the folder has files";break;
}
}
}
答案 2 :(得分:1)
更容易检查文件夹是否有孩子:
if(count(glob($_GET['dir']."/*")) {
echo "NOT EMPTY";
}