PHP:变量无需任何理由即可更改值

PHP:变量无需任何理由即可更改值,php,Php,基本上,我想做的是; 从当前文件名(-0-example.php)中获取-NUMBER-code,然后在目录($subjectDirectory)中扫描以相同代码开头的文件名。然后包括该文件 我无法这样做,因为$finalNum将代码更改为“连续编码5次”,所以我找不到要包含的正确文件。它不起作用的原因是因为readdir()只返回文件名,而不返回完整路径 试试这个: 包括($subjectDirectory.$subjectFile) Re://*如果您在此处回显$finalNum,您将在页面

基本上,我想做的是; 从当前文件名(-0-example.php)中获取-NUMBER-code,然后在目录($subjectDirectory)中扫描以相同代码开头的文件名。然后包括该文件


我无法这样做,因为$finalNum将代码更改为“连续编码5次”,所以我找不到要包含的正确文件。

它不起作用的原因是因为
readdir()
只返回文件名,而不返回完整路径

试试这个: 包括($subjectDirectory.$subjectFile)

Re://*如果您在此处回显$finalNum,您将在页面上看到“-0--0--0--0-”*/

您获得此输出的原因是因为您回显$finalNum 5次。$finalNum的价值没有改变

编辑: 我在你的
if
声明中发现了另一个问题<如果$subjectFile以$finalNum开头,则code>strpos($subjectFile,$finalNum)将返回0。 用这个代替

$subjectDirectory = '../blogtext/';
$subjectHandle = opendir( $subjectDirectory );
$fileName = $_SERVER['PHP_SELF'];
$tempArray = explode( '-', $fileName );
$finalNum = '-'.$tempArray[1].'-';
$subjectFile;
if( $subjectHandle = opendir( '../blogtext/' ) )
{
    /* If you echo $finalNum here, you get '-0-' on the page. */
    while( false !== ( $subjectFile = readdir( $subjectHandle ) ) )
    {
        /* If you echo $finalNum here, you get '-0--0--0--0--0-' on the page. */
        if( $subjectFile != '.' && $subjectFile != '..' && !is_dir( $subjectFile ) && strpos( $subjectFile, $finalNum ) ) 
        {
            include( $subjectFile );
        }
    }
    closedir( $subjectHandle );
}

fileNum
可能正被包含的文件写入。然而,你想做的事让我害怕。我相当肯定一切都正常(我甚至试过你的建议)。只是我不明白为什么$finalNum会改变它的价值。这会让你工作,但你在这里尝试做的似乎是等待发生的问题。也许是一个新的问题,说明你想做什么,你目前是如何做的,并询问关于如何重组以使其更好的建议…$finalNum不会改变价值。它在一个
循环中,而
循环被多次输出。如果你在If中回显$finalNum,你应该只看到它的输出一次。代码没有到达if语句的内部。(这可能就是我没有得到include错误的原因)。我想我的if条件有问题。我将尝试调试它。我很快会回来的。同意,我刚刚更新了答案。这是关于strps函数调用的。
if( $subjectFile != '.' && $subjectFile != '..' && !is_dir( $subjectFile ) && strpos( $subjectFile, $finalNum ) !== false )