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

时间:2015-04-28 07:57:25

标签: php arrays scope global-variables

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

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

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

step_1();

我收到以下错误:

  

未定义变量:form_fields - 第10行

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

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

2 个答案:

答案 0 :(得分:2)

你需要在函数中定义全局到$ form_fields。

像这样:

function step_1() {
   global $form_fields;

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

答案 1 :(得分:2)

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

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

然后唯一的另一种可能性是访问$_GLOBALS集合:

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

希望这能回答你的问题。