Php 用于加载所需文件的关联数组foreach循环
我正在尝试使用关联数组将所有文件加载到Php 用于加载所需文件的关联数组foreach循环,php,arrays,foreach,Php,Arrays,Foreach,我正在尝试使用关联数组将所有文件加载到'config.php'中。不同的值表示可以在哪里找到文件。但是,我不断得到以下错误输出: 无法加载:array.php、array.php、array.php、array.php、dir.php、, dir.php,dir.php,dir.php,auth.php,auth.php,auth.php,auth.php, forms.php,forms.php,forms.php,forms.php,image.php,image.php, image.ph
'config.php'
中。不同的值表示可以在哪里找到文件。但是,我不断得到以下错误输出:
无法加载:array.php、array.php、array.php、array.php、dir.php、,
dir.php,dir.php,dir.php,auth.php,auth.php,auth.php,auth.php,
forms.php,forms.php,forms.php,forms.php,image.php,image.php,
image.php,image.php,navigation.php,navigation.php,navigation.php,
navigation.php、stats.php、stats.php、stats.php、stats.php、,
tables.php,tables.php,tables.php,tables.php,text.php,text.php,
text.php,text.php,user.php,user.php,user.php,user.php,user.php,
youtube.php、youtube.php、youtube.php、youtube.php、messages.php、,
messages.php,messages.php,messages.php,nemesis.php,nemesis.php,
nemesis.php,nemesis.php,upload.php,upload.php,upload.php,
upload.php,construct.php,construct.php,construct.php,
construct.php、prepared_arrays.php、prepared_arrays.php、,
prepared_arrays.php,prepared_arrays.php
我不知道为什么会发生这种情况,也不知道为什么它说文件无法加载4次
<?php
$require = array(
'array.php' => 'f',
'dir.php' => 'f',
'auth.php' => 'f',
'forms.php' => 'f',
'image.php' => 'f',
'navigation.php' => 'f',
'stats.php' => 'f',
'tables.php' => 'f',
'text.php' => 'f',
'user.php' => 'f',
'youtube.php' => 'f',
'messages.php' => 'c',
'nemesis.php' => 'c',
'upload.php' => 'c',
'construct.php' => 't',
'prepared_arrays.php' => 'l'
);
load($require);
function load($require) {
foreach ($require as $filename => $directory) {
// init functions
if ($directory = 'f') {
$prep = FUNCTIONS_DIR . $filename;
if (is_file($prep) && is_readable($prep)) {
require($prep);
$pass[] = $filename;
} else {
$fail[] = $filename;
}
}
// init classes
if ($directory = 'c') {
$prep = CLASSES_DIR . $filename;
if (is_file($prep) && is_readable($prep)) {
require($prep);
$pass[] = $filename;
} else {
$fail[] = $filename;
}
}
// init templates
if ($directory = 't') {
$prep = TEMPLATES_DIR . $filename;
if (is_file($prep) && is_readable($prep)) {
require($prep);
$pass[] = $filename;
} else {
$fail[] = $filename;
}
}
// init libs
if ($directory = 'l') {
$prep = LIBS_DIR . $filename;
if (is_file($prep) && is_readable($prep)) {
require($prep);
$pass[] = $filename;
} else {
$fail[] = $filename;
}
}
}
if (!empty($fail)) {
if (!empty($pass)) {
$passed = implode(', ', $pass);
$message = "Loaded: {$passed}";
echo $message;
}
if (!empty($fail)) {
$failure = implode(', ', $fail);
$message = "Could not load: {$failure}";
echo $message;
}
exit();
}
}
?>
$directory='l'
应该是$directory==''l'
:)
PS:这同样适用于所有比较。它们是比较,不是赋值。
$directory='l'
应该是$directory='l'
:)
PS:这同样适用于所有比较。它们是比较,而不是赋值。仔细检查路径?这似乎比单独列出文件要麻烦得多,而且对任何想处理代码的人来说都不直观。你想在这里实现什么?您已经在花时间尝试调试为什么这不起作用,而您本可以编写requires并完成。这并不是说你在这里获得了任何额外的灵活性,因为每次你需要添加新的include时,你都必须进行代码更改。我不知道如何在注释中解释这一点,但是,在第一个if之前的
load
函数中,您可以放置一个开关来检查$directory
,并设置一个带有匹配常数的var,然后在prep上对其进行concat。这样,您就不必在代码中重复所有这些。它们是一样的。只是一个重构提示。@Alex您也可以简单地设置一个错误处理程序来处理包含警告,然后在触发错误处理程序时退出应用程序(使用适当的消息)。如果使用require(即,结束脚本执行并向您提供错误require消息),所有这些似乎都比编写一系列逻辑来执行PHP免费提供的操作更简单。您的错误日志和/或屏幕将为您提供失败请求的输出(取决于您在PHP中设置错误通知的方式)。@Alex我相信不会。这就是我的想法:仔细检查路径?这似乎比单独列出文件要麻烦得多,而且对任何想处理代码的人来说都不直观。你想在这里实现什么?您已经在花时间尝试调试为什么这不起作用,而您本可以编写requires并完成。这并不是说你在这里获得了任何额外的灵活性,因为每次你需要添加新的include时,你都必须进行代码更改。我不知道如何在注释中解释这一点,但是,在第一个if之前的load
函数中,您可以放置一个开关来检查$directory
,并设置一个带有匹配常数的var,然后在prep上对其进行concat。这样,您就不必在代码中重复所有这些。它们是一样的。只是一个重构提示。@Alex您也可以简单地设置一个错误处理程序来处理包含警告,然后在触发错误处理程序时退出应用程序(使用适当的消息)。如果使用require(即,结束脚本执行并向您提供错误require消息),所有这些似乎都比编写一系列逻辑来执行PHP免费提供的操作更简单。您的错误日志和/或屏幕将为您提供失败请求的输出(取决于您在PHP中设置错误通知的方式)。@Alex我相信不会。这就是我的想法: