Php 为什么我的函数不能访问全局创建的数组?

Php 为什么我的函数不能访问全局创建的数组?,php,arrays,scope,global-variables,Php,Arrays,Scope,Global Variables,我在函数外创建了一个数组,这意味着它应该具有全局作用域。然后,我尝试在一个函数中循环它,该函数应该可以访问全局创建的数组,但是当我尝试这样做时,它会抛出一个错误 $form_fields = array( 'name', 'locality', 'url_slug', 'address'); function step_1() { foreach($form_fields as $field) { echo $field . '<b

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

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

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

step_1();
$form\u fields=数组(
“姓名”,
"地方",,
“url_slug”,
"地址";;
功能步骤_1(){
foreach($form_字段为$field){
回显$field.“
”; } } 步骤1();
我收到以下错误:

未定义变量:表单_字段--在第10行

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


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

您需要在函数中定义全局到$form_字段

像这样:

function step_1() {
   global $form_fields;

    foreach($form_fields as $field) {
        echo $form_fields . '<br />';
    }
}
功能步骤_1(){
全局$form_字段;
foreach($form_字段为$field){
回显$form_字段。“
”; } }
您需要在函数中定义全局到$form\u字段

像这样:

function step_1() {
   global $form_fields;

    foreach($form_fields as $field) {
        echo $form_fields . '<br />';
    }
}
功能步骤_1(){
全局$form_字段;
foreach($form_字段为$field){
回显$form_字段。“
”; } }
在循环中,您希望对echo使用
$field
,而不是
$form\u字段。如果不想使用全局关键字:

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

希望这能回答你的问题

在循环中,您希望对echo使用
$field
,而不是
$form\u fields
。如果不想使用全局关键字:

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

希望这能回答你的问题

把它当作论点吗?!该函数有自己的作用域(另请参见:)请阅读php作用域手册:。。。纠正echo参数,因为没有意义,把它作为参数传递?!该函数有自己的作用域(另请参见:)请阅读php作用域手册:。。。并更正echo参数,因为这没有任何意义,因为echo上有错误,所以它不会再次工作-它必须是echo$field来修复echo。很好,Dinesh,我一直在读到避免使用全局关键字是很好的。将数组作为参数传递给函数是唯一的其他选项吗?它同样不起作用,因为echo上有一个错误-它必须是echo$field,才能修复echo。很好,Dinesh,我一直在读到避免使用全局关键字是很好的。将数组作为参数传递给函数是否是唯一的其他选项?