Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/247.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP数组\u walk需要\u一次_Php_Arrays - Fatal编程技术网

PHP数组\u walk需要\u一次

PHP数组\u walk需要\u一次,php,arrays,Php,Arrays,我只是想知道是否有人知道为什么我不能使用require\u once作为array\u walk的回调。我可以将其包含在匿名函数中并运行该函数,但它给出了一个无效的回调错误: $includes = array( 'file1.php', 'file2.php', 'file3.php' ); array_walk($includes, 'require_once'); require\u once不是一个PHP函数,而是一个控制结构。您可以创建 function my

我只是想知道是否有人知道为什么我不能使用
require\u once
作为
array\u walk
的回调。我可以将其包含在匿名函数中并运行该函数,但它给出了一个无效的回调错误:

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

require\u once
不是一个PHP函数,而是一个控制结构。

您可以创建

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);
}

你会浪费更多的时间去找出问题所在。只需使用:

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

正如Martin所写的,require once不是一个函数,因此使用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");

require\u once不是一个函数,它是一个语言构造,因此不能直接作为回调函数调用……如果您试图使用
array\u walk($includes,'echo')
作为
echo
是一个语言构造而不是函数,那么它也会出现无效回调错误。前面的两条注释都是+1。但说真的,有什么好的理由不在这里使用
foreach()
循环吗?谢谢大家,就像zigi所说的那样,只是做了一个foreach循环,但它让我不安的是,我不能在一行上完成它并保持我的代码额外干净。