函数一段时间只返回1个结果

时间:2015-06-23 08:29:01

标签: php

我想选择文件夹中的所有上传文件。我创建了一个函数:

if (!defined('select_uploads')) 
{
    function select_uploads()
    {
        $adresse="partials/rapport_qualite/uploads/"; //Adresse du dossier.
        $dossier=Opendir($adresse); //Ouverture du dossier.

        while ($Fichier = readdir($dossier))
        {
             if ($Fichier != "." && $Fichier != "..") // Filtre anti-point ! 
             {
                 return '<option value="'.$Fichier.'">'.$Fichier.'</option>';
             }   
        }
    }
}

使用此功能,我只有一个结果而不是所有文件。

3 个答案:

答案 0 :(得分:1)

现在,当满足if条件时,它将返回该特定选项,并break loopfunction。 您应创建一个string,其中包含所有option,然后return string -

    $options = '';
    while ($Fichier = readdir($dossier))
    {
         if ($Fichier != "." && $Fichier != "..") // Filtre anti-point ! 
         {
             $options.= '<option value="'.$Fichier.'">'.$Fichier.'</option>';
         }   
    }
    return $options;

RETURN

  

如果在函数内调用,则return语句会立即结束当前函数的执行,并将其参数作为函数调用的值返回。

答案 1 :(得分:1)

如果您使用PHP&gt; = 5.5.0,那么您可以将您的功能转换为生成器

if (!defined('select_uploads')) 
{
    function select_uploads()
    {
        $adresse="partials/rapport_qualite/uploads/"; //Adresse du dossier.
        $dossier=Opendir($adresse); //Ouverture du dossier.

        while ($Fichier = readdir($dossier))
        {
             if ($Fichier != "." && $Fichier != "..") // Filtre anti-point ! 
             {
                 yield '<option value="'.$Fichier.'">'.$Fichier.'</option>';
             }   
        }
    }
}

foreach(select_uploads() as $fileUpload) {
    echo $fileUpload;
}

虽然将标记移出select_uploads()并转移到foreach循环中会更清晰

答案 2 :(得分:0)

如果使用return语句,则返回结果,之后循环将不会运行。因此,您必须将所有结果连接到字符串并返回该字符串。 试试这个

if (!defined('select_uploads')) 
{
    $tempvar='';
    function select_uploads()
    {
    $adresse="partials/rapport_qualite/uploads/"; //Adresse du dossier.
    $dossier=Opendir($adresse); //Ouverture du dossier.

    while ($Fichier = readdir($dossier))
    {
         if ($Fichier != "." && $Fichier != "..") // Filtre anti-point ! 
         {
             $tempvar.'= '<option value="'.$Fichier.'">'.$Fichier.'</option>';
         }   
    }
    }
return $tempvar;
}