PHP Foreach数组作为函数中的错误(foreach中的无效参数...)

时间:2010-02-13 19:37:25

标签: php function scope

我正在开发一个新的最小项目,但我有一个错误,我不知道为什么。

通常情况下,我首先使用$array = array();

创建数组后使用数组

但是在这种情况下我创建它没有这个代码,继承了一个示例完整代码,它输出错误:

<?php $i = array('demo', 'demo'); $array['demo/demodemo'] = $i; ?>
<?php $i = array('demo', 'demo'); $array['demo/demodemo2'] = $i; ?>

<?php
foreach($array as $a)
{
    echo $a[0] . '<br>';
}

function echo_array_demo() {
    foreach($array as $a)
    {
        echo $a[0] . '<br>';
    }
}

echo_array_demo();
?>

我为数组$array创建项目,如果我在没有函数的情况下调用它(foreach),它就可以工作。但如果我在一个函数中调用,那么错误就会出现......

我不知道为什么

谢谢...

1 个答案:

答案 0 :(得分:2)

函数有自己的变量范围。函数外部定义的变量不会自动为其所知。

您可以使用global关键字将变量“导入”到函数中。

function echo_array_demo() {

    global $array;

    foreach($array as $a)
    {
        echo $a[0] . '<br>';
    }
}

使函数知道变量的另一种方法是passing it as a reference

function echo_array_demo(&$array) {

    foreach($array as $a)
    {
        echo $a[0] . '<br>';
    }
}

echo_array_demo($array);

查看PHP manual on variable scope