萬盛學電腦網

 萬盛學電腦網 >> 網絡編程 >> php編程 >> PHP實現數組按數組方式訪問和對象方式訪問

PHP實現數組按數組方式訪問和對象方式訪問

下面來給各位介紹PHP實現數組按數組方式訪問和對象方式訪問例子,希望下文可以幫助到大家.


如何實現如下需求:


$data = array('x' => 'xx', 'y' => 'yy');
echo $data['x'];//輸出xx
echo $data->x;//輸出xx

方法一:構造一個類,實現ArrayAccess接口和__get,__set魔術方法


class Test implements ArrayAccess {
    private $data = null;
    public function __construct($data){
        $this->data = $data;
    }
    public function offsetGet($offset){
        return ($this->offsetExists($offset) ? $this->data[$offset] : null);
    }
    public function offsetSet($offset, $value){
        $this->data[$offset] = $value;
    }
    public function offsetExists($offset){
        return isset($this->data[$offset]);
    }
    public function offsetUnset($offset){
        if($this->offsetExists($offset)){
            unset($this->data[$offset]);
        }
    }
    public function __get($offset){
        return ($this->offsetExists($offset) ? $this->data[$offset] : null);
    }
    public function __set($offset, $value){
        $this->data[$offset] = $value;
    }
}

測試代碼


$data = array('x' => 'x', 'y' => 'y');
$t = new Test($data);
printf("數組方式訪問(\$t['x'])輸出:%s <br />", $t['x']);
printf("對象方式訪問(\$t->y)輸出:%s <br />", $t->y);
//數組方式賦值,對象方式訪問
$t['x1'] = 'x1';
printf("數組方式賦值%s <br />", "\$t['x1']='x1'");
printf("對象方式訪問(\$t->x1)輸出:%s <br />", $t->x1);
//對象方式賦值,數組方式訪問
$t->y1 = 'y1';
printf("對象方式賦值%s <br />", "\$t->y1='y1'");
printf("數組方式訪問(\$t['y1'])輸出:%s <br />", $t['y1']);

PHP實現數組按數組方式訪問和對象方式訪問


方法二


$data = array('x' => 'x', 'y' => 'y');
$t = new ArrayObject($data, ArrayObject::ARRAY_AS_PROPS);
printf("數組方式訪問(\$t['x'])輸出:%s <br />", $t['x']);
printf("對象方式訪問(\$t->y)輸出:%s <br />", $t->y);
//數組方式賦值,對象方式訪問
$t['x1'] = 'x1';
printf("數組方式賦值%s <br />", "\$t['x1']='x1'");
printf("對象方式訪問(\$t->x1)輸出:%s <br />", $t->x1);
//對象方式賦值,數組方式訪問
$t->y1 = 'y1';
printf("對象方式賦值%s <br />", "\$t->y1='y1'");
printf("數組方式訪問(\$t['y1'])輸出:%s <br />", $t['y1']);
測試結果

PHP實現數組按數組方式訪問和對象方式訪問

copyright © 萬盛學電腦網 all rights reserved