【问题标题】:Why does my function not have access to the globally created array? [duplicate]为什么我的函数无法访问全局创建的数组? [复制]
【发布时间】:2015-07-06 23:03:34
【问题描述】:

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

$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 数组?

【问题讨论】:

标签: php arrays scope global-variables


【解决方案1】:

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

像这样:

function step_1() {
   global $form_fields;

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

【讨论】:

  • 它再次不起作用,因为 echo 出现错误 - 它必须是 echo $field
  • 修复了回声。不错的收获。
  • Dinesh,我一直在读到最好避免使用 global 关键字。将数组作为参数传递给函数是唯一的其他选择吗?
【解决方案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 />';
    }
}

希望这能回答您的问题。

【讨论】:

    猜你喜欢
    • 2013-07-03
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    • 2016-02-29
    • 1970-01-01
    • 2022-07-20
    相关资源
    最近更新 更多