为什么我的函数无法访问全局创建的数组?

Why does my function not have access to the globally created array?

我在函数之外创建了一个数组,这意味着它应该具有全局范围。然后我尝试从一个函数中循环遍历它,该函数应该可以访问全局创建的数组,但是当我尝试这样做时它会抛出一个错误。

$form_fields = array(
    'name',
    'locality',
    'url_slug',
    'address');

function step_1() {
    foreach($form_fields as $field) {
        echo $field . '<br />';
    }
}

step_1();

我收到以下错误:

Undefined variable: form_fields -- at line 10

我想避免使用 global 关键字或必须将数组添加为函数的参数,因为我只想读取数组而不更改它。

如何从 step_1() 函数中访问全局创建的 $form_fields 数组?

您需要在函数中将全局定义为 $form_fields。

像这样:

function step_1() {
   global $form_fields;

    foreach($form_fields as $field) {
        echo $form_fields . '<br />';
    }
}

在您的循环中,您想使用 $field 作为回显而不是 $form_fields。如果您不想使用全局关键字:

function step_1() {
    global $form_fields;
    foreach($form_fields as $field) {
        echo $field . '<br />';
    }
}

那么唯一的另一种可能性是访问 $_GLOBALS Collection:

function step_1() {
    foreach($_GLOBALS["form_fields"] as $field) {
        echo $field . '<br />';
    }
}

希望这能回答您的问题。