pool.php包含返回json的代码。
[{"tickets":"0","users":"0","pool_range":"2016-01-24 - 2016-01-27"}]
pool.php基础
header('Content-Type: application/json');
$output = array_values($results);
$json = json_encode($output);
echo $json;
PHP
<?php
date_default_timezone_set('America/New_York');
$current_timestamp = date('Y-m-d') . "T" . date('H:i:s');
$pool = new pool_data();
var_dump($pool);
class pool_data {
public $users;
public $tickets;
public $pool_range;
function __construct() {
$pool_json = file_get_contents('./pool.php');
$temp = json_decode($pool_json, true);
$this->users = $temp["users"];
$this->tickets = $temp["tickets"];
$this->pool_range = $temp["pool_range"];
}
}
?>
当我var_dump $ pool
时object(pool_data)#1 (3) {
["users"]=>
NULL
["tickets"]=>
NULL
["pool_range"]=>
NULL
}
启用allow_url_fopen
if( ini_get('allow_url_fopen') ) {
echo "I'm enabled";
}
答案 0 :(得分:1)
您的JSON文件返回对象数组(在此示例中为一个元素数组),但您将其用作关联数组。你确实将第二个json_decode
参数传递给true
,它将json解码为数组而不是对象,但是,你仍缺少一个维度。您可以var_dump
来查看解码后的确切结构。
所以你的课应该是这样的:
class pool_data {
public $users;
public $tickets;
public $pool_range;
function __construct() {
$pool_json = file_get_contents('./pool.php');
$temp = json_decode($pool_json, true);
$this->users = $temp[0]["users"]; //added [0]
$this->tickets = $temp[0]["tickets"]; //added [0]
$this->pool_range = $temp[0]["pool_range"]; //added [0]
}
}
我已经在我的本地服务器上创建了这两个文件,它运行正常。 结果:
object(pool_data)[1]
public 'users' => string '0' (length=1)
public 'tickets' => string '0' (length=1)
public 'pool_range' => string '2016-01-24 - 2016-01-27' (length=23)
如果包含此代码的文件已包含在例如其他地方的index.php中,则您也可能遇到相对路径问题。
可以肯定的是,您可以添加dirname(__DIR__)
,使其成为绝对路径。
更改此行:
$pool_json = file_get_contents('./pool.php');
对此:
$pool_json = file_get_contents(dirname(__DIR__) . '/pool.php');
这样可以确保您查看当前文件所在的目录。