- PHP5 有提供 ArrayAccess Interface 讓自製的 Classes/Objects 也有如陣列 (Array) 型別用 [] 取存方式。 SPL 也有實作 ArrayObject 。
- 但有一個關鍵的差異是新增陣列項目,一般陣列在無鍵值時是新增一個鍵值為最大整數的項目,鍵值為 null 時則新增一個鍵值為空字串的項目,自製物件是分不出兩者的差異的(無鍵值與 null 都視為 null)。請看下面範例:
<?php class ArrayAccessObject implements ArrayAccess{ private $position = 0; private $_array = array(); /* impements ArrayAccess */ public function offsetSet($offset, $value) { var_dump($offset); $this->_array[$offset] = $value; } public function offsetExists($offset) { return isset($this->_array[$offset]); } public function offsetUnset($offset) { unset($this->_array[$offset]); } public function offsetGet($offset) { return isset($this->_array[$offset]) ? $this->_array[$offset] : null; } } $a = array(); $b = new ArrayObject(); $c = new ArrayAccessObject(); $a[] = 'nothing'; $b[] = 'nothing'; $c[] = 'nothing'; $a[null] = 'null'; $b[null] = 'null'; $c[null] = 'null'; var_dump($a); var_dump($b); var_dump($c); /* output */ NULL NULL array(2) { [0]=> string(7) "nothing" [""]=> string(4) "null" } object(ArrayObject)#1 (1) { ["storage":"ArrayObject":private]=> array(2) { [0]=> string(7) "nothing" [1]=> string(4) "null" } } object(ArrayAccessObject)#2 (2) { ["position":"ArrayAccessObject":private]=> int(0) ["_array":"ArrayAccessObject":private]=> array(1) { [""]=> string(4) "null" } }
歡迎來到小豬圈!
2009-08-11
Array 、 ArrayAccess 與 ArrayObject
Subscribe to:
Post Comments (Atom)
個人常用鏈結
Labels
- .NET (1)
- Accessibility (3)
- ADSL (1)
- Apache (9)
- ASP.NET (1)
- Babyer (1)
- Browser (1)
- Canon MX700 (1)
- CAPTCHA (1)
- CentOS (1)
- CSS (7)
- DB:SQL (1)
- DB:SQLite (2)
- DNS (3)
- English (1)
- EXIF (1)
- filename.ext (1)
- Firefox (4)
- Firewall (1)
- Flash (4)
- Game 遊戲 (28)
- Game:PC (6)
- Game:PS3 (4)
- Game:Xbox360 (3)
- GNU (1)
- Google (6)
- Google:Android (8)
- Google:Blogger (2)
- Google:Chrome (1)
- Google:Code (2)
- GoogleAppEngine (2)
- GoogleMaps (1)
- GPG (1)
- Hinet (1)
- HTML (2)
- HTTP (1)
- i18n (1)
- IE (3)
- Java (2)
- Javascript (2)
- Linux (1)
- Microsoft (2)
- MIME (1)
- MySQL (7)
- NexusOne (2)
- OAuth (1)
- Open source 開放原始碼 (1)
- OpenID (1)
- OS (1)
- OS:Windows (33)
- PHP (49)
- PHP:GTK (2)
- PHP:PEAR (1)
- PHP:PECL (3)
- PHP:ZendFramework (4)
- PostgreSQL (1)
- PPPoE (1)
- RegularExpressions (2)
- Security (11)
- Sphinx (2)
- SQLite (1)
- TCP (1)
- Ubuntu (1)
- UDP (1)
- Usability (2)
- Virtaul PC (1)
- Wii (2)
- XML (1)
- Yahoo (2)
- Yahoo:BBAuth (1)
- Yahoo:YUI (1)
- Youtube (1)
- 不如賣雞排 (2)
- 不願役 (33)
- 中文處理 (1)
- 圖 (5)
- 媒體 (2)
- 影片 (1)
- 影音 (19)
- 思 (8)
- 攝 (9)
- 政 (7)
- 敗 (2)
- 漫畫 (5)
- 生活 (34)
- 硬體設備 (13)
- 網站開發 (16)
- 網路 (8)
- 英文 (3)
- 貓 (2)
- 資安 (1)
- 趣 (29)
- 軟體 (12)
- 遊記 (8)
- 運動 (2)
- 關於我 (1)
- 電影 (10)
No comments:
Post a Comment
Comment Form Message