Не могу получить доступ к глобальной переменной массива PHP - PullRequest
0 голосов
/ 14 февраля 2012

В функции обратного вызова модуля Drupal есть простая пользовательская функция, которая принимает массив.

Пользовательская функция выполняется правильно, когда я определяю входной массив в функции обратного вызова модуля Drupal. Однако, когда я определяю входной массив на корневом уровне (глобальный), пользовательская функция в функции обратного вызова модуля Drupal завершается ошибкой.

В качестве теста я заставил пользовательскую функцию просто выводить содержимое входного массива в виде строки. Первый метод выводит корректно, тогда как второй метод не имеет никакого вывода. В идеале я хотел бы определить массив на глобальном уровне, чтобы его могли использовать другие функции.

Мысли

<?php

// ** Placement of array for method 2
$mapping = array(
    0 => "name",
    1 => "match"
);

function mymodule_menu() {
    $items = array();

    $items['mymodule'] = array(
        'title' => 'MyModule',
        'page callback' => 'myModule_main',
        'access callback' => TRUE,
        'type' => MENU_NORMAL_ITEM
    );

    return $items;
}

function myModule_main() {

    // ** Placement of array for method 1
    $mapping = array(
        0 => "name",
        1 => "match"
    );

    $output = myFunction($mapping);

    echo $output; // ** Returned to client side via AJAX
}

Ответы [ 2 ]

5 голосов
/ 14 февраля 2012

Вам необходимо «импортировать» глобальную переменную в область действия функции, используя ключевое слово global.

См. http://php.net/manual/en/language.variables.scope.php#language.variables.scope.global

function myModule_main() {
    global $mapping;
    ...
}
1 голос
/ 15 февраля 2012
<?php

global $foobar;
$foobar = "text";

function myFunction() {
    echo $GLOBALS["foobar"]; // Returns "text"
}

?>
...