2013-09-22 102 views
0

我正在用php构建一个图片库。我使用的代码是这样的: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++; 
    } 
} 

为什么,我的意思是外部声明的变量应该有一个全球范围内,据我所知,和应该从功能内部访问。不是吗?

+1

这种情况下有一个['global'](http://php.net/global)的关键字。 – BlitZ

+0

http://php.net/manual/zh/language.variables.scope.php – user4035

回答

2

PHP不是JavaScript。全局名称空间中的函数在函数内部不可用,除非您明确地使它们成为可用。有三种方法可以做到这一点:

将它们作为一个参数(推荐)

function ImageBlock($images){ 

使用global关键字(强烈不推荐)

function ImageBlock(){ 
    global $images 

使用$GLOBALS超全球(强烈不推荐)

function ImageBlock(){ 
    $images = $GLOBALS['images']; 
+0

非常感谢。混乱清除了 – user2797662