有沒有一種方法來實現多維數組訪問的類?我想是這樣Multidimensional ArrayObject
$obj = new MultiArrayObject();
$obj['key']['subkey'] = 'test';
echo $obj['key']['subkey']; //expect 'test' here
有沒有一種方法來實現多維數組訪問的類?我想是這樣Multidimensional ArrayObject
$obj = new MultiArrayObject();
$obj['key']['subkey'] = 'test';
echo $obj['key']['subkey']; //expect 'test' here
沒有語法與一類可以攔截多水平的數組訪問,但是你可以通過implementing the ArrayAccess
interface在同一時間做一層:
class MultiArrayObject implements ArrayAccess {
protected $data = [];
public function offsetGet($offset) {
if (!array_key_exists($offset, $this->data)) {
$this->data[$offset] = new $this;
}
return $this->data[$offset];
}
/* the rest of the ArrayAccess methods ... */
}
這隻要您訪問$obj['key']
,就會創建並返回一個新的嵌套MultiArrayObject
,您可以在其中設置數據。
但是,這不會讓你區分setter和getters;只要你訪問它們,所有的值都將被隱含地創建,這可能會使這個對象的行爲有點奇怪。
如何在這裏實現'offsetSet()'? –
'$ this-> data [$ offset] = $ value;'...!? – deceze
這就是默認的'Array'行爲。你想做什麼? – Phylogenesis
我想實現'Session'類,它將把數據放到Redis存儲中,並從那裏獲取它。就像通常的'$ _SESSION'變量一樣,但具有其他功能,如'session_start()'調用。 –
''ArrayObject'不會像使用_多維數組_時那樣_完全沒有任何額外的編碼。也許有趣? [PHP ArrayAccess set multidimensional](http://stackoverflow.com/questions/29459399/php-arrayaccess-set-multidimensional/29496048#29496048)。我懷疑'ArrayObject'可以訪問很多'內部PHP數組',並免費提供它? –