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循环,但它让我不安的是,我不能在一行上完成它并保持我的代码额外干净。