我正在使用php构建图库。我使用的代码如下:
function ImageBlock() {
$dir = 'img-gallery';
$images = scandir($dir);
$classN = 1;
foreach ($images as $image) {
if ($image != '.' && $image != '..') {
echo '<img class="image' . $classN . '" src="img-gallery/' . $image . '" width="300px"
height="300px">';
}
$classN++;
}
}
如果我在另一个文件中调用此函数,它可以工作。我的问题是,如果我使用下面的cose,声明变量不起作用......它不再起作用了:
$dir = 'img-gallery';
$images = scandir($dir);
function ImageBlock() {
$classN = 1;
foreach ($images as $image) {
if ($image != '.' && $image != '..') {
echo '<img class="image' . $classN . '" src="img-gallery/' . $image . '" width="300px"
height="300px">';
}
$classN++;
}
}
为什么,我的意思是外部声明的变量应该具有我所知的全局范围,并且应该可以从函数中访问。不是吗?
答案 0 :(得分:2)
PHP不是JavaScript。除非您明确地使用函数,否则全局命名空间中的函数在函数内部不可用。有三种方法可以做到这一点:
将它们作为参数传递(推荐)
function ImageBlock($images){
使用global
关键字(强烈不推荐)
function ImageBlock(){
global $images
使用$GLOBALS
超全球(强烈不推荐)
function ImageBlock(){
$images = $GLOBALS['images'];