PHP array_walk require_once

时间:2014-01-07 16:46:44

标签: php arrays

我只是想知道是否有人知道为什么我不能使用require_once作为array_walk的回调。我可以将它包含在一个匿名函数中并运行它,但它为使用提供了无效的回调错误:

$includes = array(
    'file1.php',
    'file2.php',
    'file3.php'
);
array_walk($includes, 'require_once');

4 个答案:

答案 0 :(得分:6)

require_once不是PHP函数,而是控制结构。

答案 1 :(得分:2)

你可以创建

function my_require_once ($name)
{
    require_once $name;
}

其他人是对的,这不是一个功能。它在您编写的PHP代码模式之外运行。如上所述,即使在函数内调用,文件的内容也会被带入全局命名空间。

我使用它,例如做

之类的东西
function my_log ($message, $extra_data = null)
{
    global $php_library;
    require_once "$php_library/log.php"; // big and complicated functions, so defer loading

    my_log_fancy_stuff ($message, $extra_data);
}

答案 2 :(得分:2)

你会浪费更多的时间来发现错误。只需使用:

$includes = array(
    'file1.php',
    'file2.php',
    'file3.php'
);
foreach($includes as $include) {
    require_once($include);
}

答案 3 :(得分:0)

正如马丁写道,要求曾经不是一个函数,所以你的array_walk解决方案并没有起作用。如果要包含多个文件,可以尝试使用它:

function require_multi($files) 
{
    $files = func_get_args();
    foreach($files as $file)
    {
        require_once($file);
    }
}

用法:

require_multi("fil1.php", "file2.php", "file3.php");