Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP函数和获取值_Php - Fatal编程技术网

PHP函数和获取值

PHP函数和获取值,php,Php,我创建了一个函数来计算和显示目录中的文件数,但它不起作用 功能: <?php function nnndir($dirx) { $direx=opendir("$dirx"); $nfiles=0; while($filexx=readdir($direx)) { if ($filexx!="." && $filexx!=".." && $filexx!="config.dat") {

我创建了一个函数来计算和显示目录中的文件数,但它不起作用

功能:

<?php
function nnndir($dirx)
{
    $direx=opendir("$dirx");

    $nfiles=0;

    while($filexx=readdir($direx))
    {
        if ($filexx!="." && $filexx!=".." && $filexx!="config.dat")
        {
            $nfiles++;
        }
    }

    closedir($direx);

    $num_f="Number of Files it´s : ".$nfiles."";

    global $num_f;
}

nnndir("".$ruta_path_adm."".$ruta_db."/db_register");

echo $num_f;
?>


应该显示数字,但通常不显示。然而,它似乎间歇性地工作。如何更正此问题?

当函数终止时,其所有局部变量都会消失
$num_f
}
之后消失,不应使用全局。您应该使用返回值:

<?php
function nnndir($dirx)
{
    $direx=opendir("$dirx");
    $nfiles=0;

    while($filexx=readdir($direx))
    {
        if ($filexx!="." && $filexx!=".." && $filexx!="config.dat") $nfiles++;
    }

    closedir($direx);
    return $nfiles;
}

echo "Number of files : " . nndir("".$ruta_path_adm."".$ruta_db."/db_register");
?>

scandir
返回包含目录内容的数组。我使用
count()
来获得元素的数量,并为
减去2。

当函数终止时,其所有局部变量都会消失
$num_f
}
之后消失,不应使用全局。您应该使用返回值:

<?php
function nnndir($dirx)
{
    $direx=opendir("$dirx");
    $nfiles=0;

    while($filexx=readdir($direx))
    {
        if ($filexx!="." && $filexx!=".." && $filexx!="config.dat") $nfiles++;
    }

    closedir($direx);
    return $nfiles;
}

echo "Number of files : " . nndir("".$ruta_path_adm."".$ruta_db."/db_register");
?>
<¿php
    function count_files($dir)
    {
        $files = scandir($dir);
        return count($files) - 2; // We remove 2, "." and ".." occurences
    }

    $num_files = count_files("".$ruta_path_adm."".$ruta_db."/db_register");
    echo "Number of files: {$num_files}";

    // For having an array of filenames, just call:
    // $filesArray = scandir("".$ruta_path_adm."".$ruta_db."/db_register");
?>
scandir
返回包含目录内容的数组。我使用
count()
来获得元素的数量,并为
减去2。


<¿php
    function count_files($dir)
    {
        $files = scandir($dir);
        return count($files) - 2; // We remove 2, "." and ".." occurences
    }

    $num_files = count_files("".$ruta_path_adm."".$ruta_db."/db_register");
    echo "Number of files: {$num_files}";

    // For having an array of filenames, just call:
    // $filesArray = scandir("".$ruta_path_adm."".$ruta_db."/db_register");
?>
更好的方法(避免调用scandir()两次)是使用函数分析目录并一次返回所有数据

<¿php
    function analyze_dir($dir)
    {
        $ret = array();
        $ret['filelist'] = scandir($dir);
        $ret['num_files'] = count($ret['filelist']) - 2; // We remove 2, "." and ".." occurences
        return $ret;
    }

    $data = analyze_dir("".$ruta_path_adm."".$ruta_db."/db_register");
    echo "Number of files: {$data['num_files']}";

    // The array of filenames is $data['filelist']
?>


更好的方法(避免调用scandir()两次)是使用函数分析目录并一次返回所有数据

<¿php
    function analyze_dir($dir)
    {
        $ret = array();
        $ret['filelist'] = scandir($dir);
        $ret['num_files'] = count($ret['filelist']) - 2; // We remove 2, "." and ".." occurences
        return $ret;
    }

    $data = analyze_dir("".$ruta_path_adm."".$ruta_db."/db_register");
    echo "Number of files: {$data['num_files']}";

    // The array of filenames is $data['filelist']
?>


首先,不要使用全局变量,您可以返回$num\f;第二,首先使用is_dir()检查处理前是否存在dir,不要使用global,您可以返回$num\u f;其次,使用is_dir()在处理之前检查dir是否存在