0

我目前正在尝试使用 json_decode 用数据填充 2D 数组。但是,它似乎加载正确,但是当我尝试获取特定值时,即使不是,它也会返回 null。

我的 2dtestarray.php:

<?php
class testarray {

public static $listConfigs;

public function __construct() {
    $this->listConfigs = json_decode(file_get_contents('configuration.json'), true);
}

public static function getValue($list, $property) {
    return self::$listConfigs[$list][$property];
}

public function save() {
    file_put_contents('configuration.json',json_encode($listConfigs));
}
}
?>

我的testload.php:

<?php
    require_once("2darraytest.php");
    $ta = new testarray();

    var_dump($ta->getValue('main', 'canView'));

    var_dump($ta->listConfigs);

    $test = json_decode(file_get_contents('configuration.json'), true);

    var_dump($test);

    $mainList = $test['main']['canView'];
    echo $mainList;
?>

我的配置.json:

{"main":{"canView":"true"},"secondary":{"canView":"false"}}

testload.php 的输出:

NULL 
array(2) { ["main"]=> array(1) { ["canView"]=> string(4) "true" } ["secondary"]=> array(1) { ["canView"]=> string(5) "false" } } 
array(2) { ["main"]=> array(1) { ["canView"]=> string(4) "true" } ["secondary"]=> array(1) { ["canView"]=> string(5) "false" } } 
true

最后,我的问题,这就是为什么是“var_dump($ta->getValue('main', 'canView'));” 返回 null 而不是 true,例如 "$mainList = $test['main']['canView']; echo $mainList;" 做?

4

1 回答 1

0

您正在访问一个静态属性getValue

self::$listConfigs[$list][$property]

但访问$ta->listConfigs. 构造函数将值设置到实例属性中。

$this->listConfigs = json_decode(file_get_contents('configuration.json'), true);

因此,这会导致实例同时访问静态self::$listConfigs属性和实例属性$this->listConfigs

尝试更改构造函数以使用静态属性。

public function __construct() {
    self::$listConfigs = json_decode(file_get_contents('configuration.json'), true);
}
于 2013-03-31T04:17:38.943 回答