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

Php 函数在一段时间内只返回1个结果,php,Php,我想选择文件夹中的所有上传文件。我创建了一个函数: if (!defined('select_uploads')) { function select_uploads() { $adresse="partials/rapport_qualite/uploads/"; //Adresse du dossier. $dossier=Opendir($adresse); //Ouverture du dossier. while ($

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

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>';
             }   
        }
    }
}
if(!defined('select_uploads'))
{
函数select_uploads()
{
$adresse=“partials/rapport_qualite/uploads/”;//adrese du docsier。
$dossier=Opendir($ADRESE);//文件的格式。
而($Fichier=readdir($dossier))
{
如果($Fichier!=“&&&$Fichier!=”)//filter反点!
{
返回“.$Fichier.”;
}   
}
}
}

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

现在,当
条件满足时,如果
条件满足,它将返回该特定选项,并
中断
循环
函数。
您应该使用所有
选项创建
字符串
,然后
返回
字符串
-

    $options = '';
    while ($Fichier = readdir($dossier))
    {
         if ($Fichier != "." && $Fichier != "..") // Filtre anti-point ! 
         {
             $options.= '<option value="'.$Fichier.'">'.$Fichier.'</option>';
         }   
    }
    return $options;
$options='';
而($Fichier=readdir($dossier))
{
如果($Fichier!=“&&&$Fichier!=”)//filter反点!
{
$options.=''.$Fichier';
}   
}
返回$options;

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


如果您使用的是PHP>=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;
}
if(!defined('select_uploads'))
{
函数select_uploads()
{
$adresse=“partials/rapport_qualite/uploads/”;//adrese du docsier。
$dossier=Opendir($ADRESE);//文件的格式。
而($Fichier=readdir($dossier))
{
如果($Fichier!=“&&&$Fichier!=”)//filter反点!
{
收益率“.$Fichier.”;
}   
}
}
}
foreach(选择_uploads()作为$fileUpload){
echo$fileUpload;
}

虽然将标记从select_uploads()中移到foreach循环中会更干净,但如果使用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;
}
if(!defined('select_uploads'))
{
$tempvar='';
函数select_uploads()
{
$adresse=“partials/rapport_qualite/uploads/”;//adrese du docsier。
$dossier=Opendir($ADRESE);//文件的格式。
而($Fichier=readdir($dossier))
{
如果($Fichier!=“&&&$Fichier!=”)//filter反点!
{
$tempvar.'='.$Fichier.';
}   
}
}
返回$tempvar;
}

return打破了循环。。。因此,使用另一种逻辑还有一件事,当从目录中读取文件时,您确实应该针对
FALSE
进行测试,而不是检查假值。一个名为
0
false
的文件将过早地跳出循环:
如果($fichier=readdir($dossier))!==false){…}
。做得好,我添加了测试。感谢您的帮助,您是否意识到PHP5.4将在未来两个月内寿终正寝,甚至PHP5.5也只是安全修复?