国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

利用ObjMap將多維數組轉換成Object

2019-11-17 04:26:44
字體:
來源:轉載
供稿:網友

相必大家都知道 stdClass 類,
這這可看成是php5的一個基類, 提供了類似于數組的調用方法
可以通過顯式的方法將一個數組轉換成stdClass,然后通過用對像的方式訪問
復制PHP內容到剪貼板
PHP代碼:
$a = new stdClass();
$a->b = 1;
echp $a->b; // output:1
// arr->obj
$arr = array('a','b');
$obj = (object)$arr;


為什么不用數組呢? 對于PHP來說用數組不是更方便嗎?
1. 我喜歡用對像的調用方式,寫起來方便,順暢
2. 數組是COPY值,對像是能過引用的
3. 可以實現一些特殊的功能,(全局靜態變量,這個以后再說)

但是對于多維數組呢? 我們不能就這樣的轉換,
下面這個類.將會實現這樣的方法,
至于可以用在什么地方.大家可以發揮
復制PHP內容到剪貼板
PHP代碼:
$data = array('a1'=>array('b1'=>'b1value','b2'=>'b2value','b3'=>'b3value'));
     $data = new map($data);
     // OBJ 取值
     echo $data->a1->b1;   // output: b1value
     // OBJ 賦值
     $data->a1->b2 = 'newb2value';
     echo '<br>'.$data->a1->b2;   //output: newb2value
     // ARRAY 取值
     echo '<br>'.$data['a1']['b3']; //output: b3value
   // FOREACH 循環
     // output: b1=>b1value  b2=>newb2value  b3=>b3value
     foreach($data->a1 as $key=>$val){
      echo '<br>'.$key.'=>'.$val;
     }


class map
復制PHP內容到剪貼板
PHP代碼:
class map extends ArrayObject{
 
    // 獲取 arrayobject 因子
    public function __construct(array $array = array()){
        foreach ($array as &$value){
            is_array($value) && $value = new self($value);
        }
        parent::__construct($array);
    }
 
    // 取值
    public function __get($index){
        return $this->offsetGet($index);
    }
 
    // 賦值
    public function __set($index, $value){
     is_array($value) && $value = new self($value);
        $this->offsetSet($index, $value);
    }
 
    // 是否存在
    public function __isset($index){
        return $this->offsetExists($index);
    }
 
    // 刪除
    public function __unset($index){
        $this->offsetUnset($index);
    }
 
    // 轉換為數組類型
    public function toArray(){
        $array = $this->getArrayCopy();
        foreach ($array as &$value){
            ($value instanceof self) && $value = $value->toArray();
        }
        return $array;
    }
 
    // 打印成字符
    public function __toString(){
        return var_export($this->toArray(), true);
    }
   
    // 根據索引賦值
    public function put($index,$value){
     is_array($value) && $value = new self($value);
        $this->offsetSet($index, $value);
    }
   
    // 根據索引取值
    public function get($index){
     return $this->offsetGet($index);
    }
 
}


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 静宁县| 怀集县| 泽普县| 桐庐县| 九江市| 高尔夫| 亚东县| 阿图什市| 社旗县| 丰原市| 辽阳县| 安吉县| 依安县| 宁化县| 安远县| 星子县| 东乡族自治县| 兴业县| 福清市| 承德市| 原阳县| 安国市| 海丰县| 遂宁市| 巫溪县| 乌鲁木齐县| 隆子县| 通州区| 昔阳县| 嵊泗县| 栖霞市| 五大连池市| 宜宾县| 闻喜县| 琼中| 伽师县| 北京市| 融水| 双柏县| 晋州市| 启东市|