为什么我不能在'array_map'中使用'require'?

时间:2015-04-02 11:53:35

标签: php

我试图在文件列表中包含内容:

$files = [
    'a.php',
    'b.php',
];
$contents = array_map('require', $files);

但这并没有奏效。我得到的错误是:

  

警告:array_map()期望参数1是有效的回调,函数'要求'未找到或无效的功能名称

为什么会这样,有没有办法让它发挥作用?

4 个答案:

答案 0 :(得分:8)

因为要求不是一种功能,它是一种语言结构。

您需要创建有效的回调函数来执行实际需求,或使用自动加载器

答案 1 :(得分:1)

正如大家已经注意到的那样 - 它是一种语言结构。

你可以试试这个

$includes = array('a.php', 'b.php');

array_map(function($file){
        require $file;
}, $includes);

答案 2 :(得分:0)

同意Mark Ba​​ker,因为它不起作用,如果包含类文件,可以使用_autoload()。

答案 3 :(得分:0)

use autoload or spl_autoload_register 
to comfort work use namespaces
or you may use array_wallk without return value and anonunys function
`$files` = [
'a.php',
    'b.php',
];
`$contents` = array_map(`$files`, function(`$el`){
require(`$el`);
});

//but foreach working faster:

foreach(`$files` as `$item`){
require(`$item`


);}`