Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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 用于加载所需文件的关联数组foreach循环_Php_Arrays_Foreach - Fatal编程技术网

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我相信不会。这就是我的想法: