如何在变量中使用 require()

How to use require() in a variable

我正在为一个学校项目开发 JSON 解析器,我有一个 JSON 数据文件存储在我的根文件夹之外(/var/www/html/ 而 JSON 存储在 /var/data/ 中)。我需要读取 JSON 文件的内容并使用其中的内容。我写了下面这段代码:

// $json = file_get_contents("my_data_file.json");
$json = require "/var/data/my_data_file.json";

    $jsonIterator = new RecursiveIteratorIterator(
    new RecursiveArrayIterator(json_decode($json, TRUE)),
    RecursiveIteratorIterator::SELF_FIRST);

    foreach ($jsonIterator as $key => $val) {
        if(is_array($val)) {
            echo "$key:\n";
        } else {
            echo "$key => $val\n";
        }
    }

如果我使用第一个 $json = file_get_contents("my_data_file.json"); 它可以正常工作,但由于该文件位于根文件夹之外,所以我使用 require() 来获取该文件。这是我遇到麻烦的地方,因为使用 require() 只是输出该文件中的所有内容,而不是将数据加载到变量中。有没有一种方法可以使用 require() 或类似的调用将数据从我的根文件夹中获取到变量中?

这是不可能的。 require 将 return bool 值如果 false 和内容如果为真。

一个可能的解决方案是有两个单独的文件:

get_content.php

<?php
// set header to plain text so code will return as just text
header('Content-Type: text/plain');
// require the file
require 'someJsonFile.json'; 
?>

index.php

<?php
$json = file_get_content(get_content.php);
// ...

希望对您有所帮助!

还有另一个 answer here,有关这方面的更多信息。