2013-09-22 6 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/en/language.variables.scope.php – user4035

ответ

2

PHP не JavaScript. Функции в глобальном пространстве имен недоступны внутри функций, если вы явно не делаете их так. Есть три способа сделать это:

передать их в качестве параметра (рекомендуется)

function ImageBlock($images){ 

Используйте global ключевое слово (настоятельно не рекомендуется)

function ImageBlock(){ 
    global $images 

Используйте $GLOBALS superglobal (сильно не рекомендуется)

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

большое спасибо. путаница очищена – user2797662

Смежные вопросы