PHP:由于某种原因,值不会增加

时间:2012-03-10 20:05:17

标签: php

$blogDir = 'blog/';
$blogDirHandle = opendir( $blogDir );
$checkingFile = '';
$number = 0;
$codeNumber = '-'.$number.'-';
if( $blogDirHandle = opendir( 'blog/' ) )
{
    while( false !== ( $checkingFile = readdir( $blogDirHandle ) ) ) 
    {
        if( $checkingFile != '.' && $checkingFile != '..' && !is_dir( $blogDir.$checkingFile ) && false !== strpos( $checkingFile, $codeNumber ) )
        {
            $number++;
            $codeNumber = '-'.$number.'-';
        }
    }
closedir( $blogDirHandle );
}

如果$ blogDir有一个以当前$ codeNumber开头的文件,则应检查上面的代码。如果是,则增加$ number(从而更改$ codeNumber),然后循环检查,直到没有更多的文件以$ codeNumber开头。 在此之后,我创建了多个文件,这些文件以新的$ codeNumber命名。

但由于某种原因,它不起作用。

如果目录中只有一个名为-0-filename.php的文件,它会增加该值,我创建的下一个文件的前缀为-1-。但是在创建第二个文件后,它不会增加$ number。它只是生成带有重复前缀的文件(即-0-filename.php,-1-othername.php和-1-thirdname.php)

任何帮助?

2 个答案:

答案 0 :(得分:1)

Let me repeat myself, from your previous question:将所有文件收集到一个数组中,然后对其进行操作。

假设您的文件夹包含2个文件:

-0-filename.txt
-1-filename.txt

但由于某种原因,您的服务器以相反的顺序列出此目录,因此在第一次迭代中您检查-0-但当前文件是-1-filename.txt,没有任何反应,数字不会增加且{{ 1}}正在移动到readdir的下一个文件。现在你有了匹配,数字会增加,但是没有更多的文件需要阅读 - -0-filename.txt循环已经结束,你剩下的数字= 1.

答案 1 :(得分:0)

这是另一种方法:

$lastNum = 0;

if ( ( $files = scandir( 'blog/' ) ) !== FALSE && count( $files ) > 0 )
{
    $lastNum = substr( $files[ count( $files ) - 1 ], 1, 1 );
}

scandir()返回从指定路径中提取的已排序文件名数组。 然后代码获取已排序数组的最后一个条目(如果目录中的文件是GUARANTEED(!)以遵循上述约定,则将是文件名中具有最大编号的那个),然后提取文件名中的第二个字符,应该是文件编号指示符。