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 に答える