PHP变量继承问题

PHP变量继承问题,php,arrays,variables,inheritance,null,Php,Arrays,Variables,Inheritance,Null,我在PHP中遇到了一个类继承问题,我对其原因和解决方法感到困惑。请看下面的代码: class Vehicle { public $properties = array(); public function funky($property) { echo json_encode($this->properties) . PHP_EOL; echo json_encode(isset($this->proper

我在PHP中遇到了一个类继承问题,我对其原因和解决方法感到困惑。请看下面的代码:

    class Vehicle {
        public $properties = array();

        public function funky($property) {
         echo json_encode($this->properties) . PHP_EOL;
         echo json_encode(isset($this->properties[$property])) . PHP_EOL;
         echo json_encode($this->properties[$property]) . PHP_EOL;
        }
    }

    class Car extends Vehicle {
         public $properties = array('colour' => null, 'size' => null, 'fuel' => null);
    }

    $car = new Car();
    $car->funky('colour');
这张照片是:

    {"colour":null,"size":null,"fuel":null}
    false
    null
如果我尝试使用这个子类,而不是使用非null值初始化数组:

    class Car extends Vehicle {
        public $properties = array('colour' => 'blue', 'size' => 8, 'fuel' => 'gas');
    }
然后我得到了我所期望的:

    {"colour":"blue","size":8,"fuel":"gas"}
    true
    "blue"
这对我来说没什么意义。我的猜测是,如果子类使用空值初始化数组,那么它实际上并不关心创建数组元素。然而,这与PHP处理变量的方式相冲突。例如:

    $ar = array('takis' => null);
    echo json_encode(isset($ar));
这是真的! 对此有合理的解释吗?您建议采取什么解决方法

提前感谢:-)

如果变量存在且不是
null
,则返回
true
,否则返回
false

如果需要检查数组索引是否存在,而不管其值如何使用


另请参见。

isset($ar))
$ar被设置为什么它会打印除true以外的任何内容?$ar包含一个元素,该元素的值为null并不重要,这就是echo json_encode(isset($ar))的原因;打印TRUE。而不是
echo json\u encode(..)。PHP_EOL
,习惯于
var_dump(..)
。您也可以在这里找到deceze的答案,并提供更好的解释。