【问题标题】:Show only one result on foreach command (php)在 foreach 命令(php)上只显示一个结果
【发布时间】:2013-09-19 11:52:46
【问题描述】:

我有以下代码。

    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";
            }
        }
    }

如果文件夹包含only 文件,我想做的只是显示one 消息。问题是,正如预期的那样,foreach 正在为文件夹包含的每个文件“回显”一条消息。

我怎样才能“绕过”它,如果文件夹有文件,则只打印一条消息?

感谢和问候

顺便说一句 - 很抱歉缩进,我正在记事本上写,因为我不在家,而且缩进不完美

【问题讨论】:

    标签: php file foreach directory


    【解决方案1】:

    如果我理解正确,您不只是想在第一个找到的文件上回显,而是如果该文件夹仅包含文件(即没有子文件夹)。如果这是真的,这将起作用:

    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";
        }
    }
    

    【讨论】:

    • 好的,如果我理解,break 会在第一个找到的文件上停止foreach,对吗?如果是这样,我想要你所说的,如果文件夹只包含文件,请回显......让我试试
    • 我一直在测试这段代码,如果一个文件夹有文件和子文件夹,脚本不会回显。我想要的是脚本在这种情况下回显:文件夹有文件,文件夹有文件和子文件夹。我不希望它仅在文件夹为空或只有子文件夹,没有文件时才回显。
    • 一个文件夹只能有 1) 子文件夹 2) 文件 3) 子文件夹和文件。如果您想回显它是否有文件或文件和子文件夹,那么 Jahnux73 的答案是正确的。使用他的方法,如果找到文件,循环将停止,但在此之前,它将执行回显。
    • 是的,我想要第三个选项...它正在工作:) 但是,也感谢 Marcel!
    【解决方案2】:

    你可以试试“休息”吗? 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;
             } 
          }  
       }
    

    【讨论】:

    • 完美,成功了。太感谢了。不知道那个!我会在 10 分钟后接受你的回答 :)
    【解决方案3】:

    更容易检查文件夹是否有子文件夹:

    if(count(glob($_GET['dir']."/*")) { 
      echo "NOT EMPTY"; 
    }
    

    【讨论】:

    • 让我试着举个例子。我有一个网络文件管理器。而且我有一个功能可以从用户所在的文件夹中创建一个 zip。我想要的是创建 zip 的按钮仅在文件夹中有文件时出现。如果它是空的或者它只有子文件夹,我希望按钮被隐藏......所以我认为孩子在这种情况下不会工作
    猜你喜欢
    • 1970-01-01
    • 2023-03-16
    • 2021-11-01
    • 1970-01-01
    • 2015-04-24
    • 1970-01-01
    • 2017-03-09
    • 1970-01-01
    • 2017-12-12
    相关资源
    最近更新 更多