我有一个php脚本,用于检查特定文件是否存在。该文件的名称由'compartment'变量定义。当脚本被复制并再次粘贴到一个单独的块中时,只更改它运行的隔离变量...
比如说1.jpeg存在,但2.jpeg不存在。第一个块显示指向此文件的链接,但第二个块显示上传表单时也是如此,因为2.jpeg不存在。
好像$ currentfile或$ filename变量被转移到它们下面的块中。
请在下面找一个我的问题的例子......
<?php
$compartment = "1";
foreach (glob("$compartment.*") as $filename) {
$currentfile = "$filename";
}
if (file_exists($currentfile)) {
echo "
/* If the file exists, it will display a link to the file. */
<a href='$currentfile' target='_blank'>LAUNCH PREVIEW</a>
";
} else {
echo "
/* Here is an uploader form that would transform foobar.jpeg into $compartment.jpeg. */
";
}
?>
<?php
$compartment = "2";
foreach (glob("$compartment.*") as $filename) {
$currentfile = "$filename";
}
if (file_exists($currentfile)) {
echo "
/* If the file exists, it will display a link to the file. */
<a href='$currentfile' target='_blank'>LAUNCH PREVIEW</a>
";
} else {
echo "
/* Here is an uploader form that would transform foobar.jpeg into $compartment.jpeg. */
";
}
?>
谢谢。
答案 0 :(得分:1)
答案 1 :(得分:1)
foreach
将无法执行(并且应该对你大喊大叫)。
因此,由于2.jpeg不存在,glob()将返回NULL,使foreach不执行。但是,您要在$currentfile
中分配永不执行的foreach
,以便$currentfile
保留旧值“1.jpeg”。
这可能看起来相反的原因($compartment = 1
)是因为$currentfile
在第一次使用时使用垃圾if(file_exists($currentfile))
进行初始化。这当然评估为false,因此执行跳转到else部分。
HTH
答案 2 :(得分:0)
将整个if / else块放在foreach中,并用file_exists($ filename)替换file_exists($ currentfile);
答案 3 :(得分:0)
.php文件中的单独部分是同一命名空间/块/执行的一部分。如果您在第一部分中使用变量,它仍将被定义,并且在第二部分中仍然具有相同的值。
之间没有区别
<?php
$MyValue = 'Value';
?>
<?php
echo $MyValue;
?>
和
<?php
$MyValue = 'Value';
echo $MyValue;
?>