在一个PHP脚本中,我想获取由另一个PHP脚本动态生成的json数据。
作为示例,让我们使用动态PHP生成的JSON文件的简单示例:
<?php
// note: unlike this simplified example, the data in my script is dynamically generated
$some_data = array(
'color' => 'blue',
'number' => 33,
'length' => 'long'
);
header('Content-Type: application/json');
echo json_encode($some_data);
...将呈现此json文件:
{ "color": "blue", "number": 33, "length": "long" }
现在如何从另一个PHP文件中包含此PHP文件,以便可以动态获取该数据?
如果我使用$data = include 'json_data.php';
,它不将数据存储在$ data变量中,则需要在其中包含定义的mime类型标头,并确定页面是该mime类型,而不是从中确定数据。包括的是那个哑剧类型并且是单独的。
file_get_contents()
和fopen()
仅返回实际的PHP代码,而不呈现它并返回结果json数据。
我可以使用cURL ...
<?php
$c = curl_init();
curl_setopt($c, CURLOPT_HEADER, false);
curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
curl_setopt($c, CURLOPT_URL, 'https://www.example.com/json_data.php');
header('Content-Type: application/json');
echo curl_exec($c);
curl_close($c);
...但是访问本地文件似乎不算过分吗?另外,这将需要在我的本地无业游民开发环境中进行一些额外的设置工作,make my local file HTTP-accessible for cURL to be able to access it。
答案 0 :(得分:1)
为什么不创建一个函数来处理返回JSON(或用于创建JSON的数组)的逻辑,并在两个脚本中都使用它,所以不必只包含第一个PHP文件。包含共享功能的文件。
这是我的意思:
<?php
function getJson()
{
// Your real logic, not static content
return [
'color' => 'blue',
'number' => 33,
'length' => 'long'
];
}
如果您在自己的PHP文件中具有上述功能,则可以在编写的两个PHP脚本中包含(或要求使用)该功能。