0

如何对ArrayObj未定义的索引不敏感,我有时需要在日志中使用未定义的索引示例

$this->log['some']['other']['info']++

这是我的尝试:

class arrayInSensitive extends \arrayObject{

    var $data = array();

    public function offsetGet($name) {
        if(!array_key_exists($name,$this->data)) $this->data[$name]=new arrayInSensitive();

        return $this->data[$name];
    }
    public function offsetSet($name, $value) {
        $this->data[$name] = $value;
    }
    public function offsetExists($name) {
        return (array_key_exists($name,$this->data));
    }
    public function offsetUnset($name) {
        unset($this->data[$name]);
    }

}

怎么做 ?

4

1 回答 1

0

每当您引用索引值时,只需强制执行特定情况

class arrayInSensitive extends \arrayObject{

    var $data = array();

    public function offsetGet($name) {
        if(!array_key_exists(strtolower($name),$this->data)) $this->data[strtolower($name)]=new arrayInSensitive();

        return $this->data[strtolower($name)];
    }
    public function offsetSet($name, $value) {
        $this->data[strtolower($name)] = $value;
    }
    public function offsetExists($name) {
        return (array_key_exists(strtolower($name),$this->data));
    }
    public function offsetUnset($name) {
        unset($this->data[strtolower($name)]);
    }

}
于 2013-04-05T10:19:23.100 回答