我包含了目录的所有php文件,并且工作得很好
foreach (glob("directory/*.php") as $ScanAllFiles)
{
include_once($ScanAllFiles);
}
但问题是这些文件的内容都是这样的
$workers = array(
blah,
blah
);
$employers = array(
blah,
blah
);
现在,当我包含所有这些文件时,它有些无意义,因为我将重复$ worker和$ employer
我希望他们像这样
$workers = array()
$workers .=array()
现在有没有在没有编辑所有php文件的情况下获取$ vars?
答案 0 :(得分:4)
您必须使用array_merge()
函数自行合并数组:
$all_workers = array();
foreach (glob("directory/*.php") as $ScanAllFiles) {
$workers = array(); // So if there is no $workers array in the current file,
// there will be no risk of merging anything twice
// => At worse, you'll merge an empty array (i.e. nothing) into $all_workers
include $ScanAllFiles;
$all_workers = array_merge($all_workers, $workers);
}
PHP不会自动执行此操作:基本上,包括一个文件就像在您放置include
语句的行中将其整个内容复制粘贴一样。
答案 1 :(得分:1)
一个选项可能是在函数中包含这些文件,以便您使用范围变量而不是全局变量。
$employees = array();
foreach (glob("directory/*.php") as $ScanAllFiles)
{
$employees = array_merge(my_include($ScanAllFiles), $employees);
}
function my_include($file) {
include_once($file);
return $employees;
}
答案 2 :(得分:0)
在这种情况下,最好重写特定的脚本。一个不太可读但功能正常的方法是:
$workers = (array)$workers + array(
blah,
blah,
);
虽然+
方法并非总是最好,但最好使用array_merge
。