首頁  >  文章  >  後端開發  >  php—ArrayAccess接口

php—ArrayAccess接口

伊谢尔伦
伊谢尔伦原創
2016-11-22 11:01:271480瀏覽

提供像存取陣列一樣存取物件的能力的介面。

介面摘要

ArrayAccess {
    /* 方法 */
    abstract public boolean offsetExists ( mixed $offset )
    abstract public mixed offsetGet ( mixed $offset )
    abstract public void offsetSet ( mixed $offset , mixed $value )
    abstract public void offsetUnset ( mixed $offset )
}

Example #1 使用範例

<?php
    class obj implements ArrayAccess {
        private $container = array();
        public function __construct() {
            $this->container = array(
                "one" => 1,
                "two" => 2,
                "three" => 3,
            );
        }
        public function offsetSet($offset, $value) {
            if (is_null($offset)) {
                $this->container[] = $value;
            } else {
                $this->container[$offset] = $value;
            }
        }
        public function offsetExists($offset) {
            return isset($this->container[$offset]);
        }
        public function offsetUnset($offset) {
            unset($this->container[$offset]);
        }
        public function offsetGet($offset) {
            return isset($this->container[$offset]) ? $this->container[$offset] : null;
        }
    }
    $obj = new obj;
    var_dump(isset($obj["two"]));
    var_dump($obj["two"]);
    unset($obj["two"]);
    var_dump(isset($obj["two"]));
    $obj["two"] = "A value";
    var_dump($obj["two"]);
    $obj[] = &#39;Append 1&#39;;
    $obj[] = &#39;Append 2&#39;;
    $obj[] = &#39;Append 3&#39;;
    print_r($obj);
?>

以上例程的輸出類似:

bool(true)
int(2)
bool(false)
string(7) "A value"
obj Object
(
    [container:obj:private] => Array
        (
            [one] => 1
            [three] => 3
            [two] => A value
            [0] => Append 1
            [1] => Append 2
            [2] => Append 3
        )
)

方法清單

Array::AccessoffsetExists — 檢查一個偏移位置是否存在偏移量一個偏移位置的值

ArrayAccess::offsetSet — 設定一個偏移位置的值

ArrayAccess::offsetUnset — 重設一個偏移位置的值

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn