php教程 php手册 利用ObjMap将多维数组转换成Object

利用ObjMap将多维数组转换成Object

Jun 13, 2016 am 10:34 AM
object 사용 다차원 할 것이다 다음으로 교체 정렬 알다 친절한 변화

相必大家都知道 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
.$data->a1->b2;   //output: newb2value
     // ARRAY 取值
     echo
.$data[a1][b3]; //output: b3value
   // FOREACH 循环
     // output: b1=>b1value  b2=>newb2value  b3=>b3value
     foreach($data->a1 as $key=>$val){
      echo
.$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);
    }
 
}

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

뜨거운 기사 태그

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

foreach 루프를 사용하여 PHP 배열에서 중복 요소를 제거하는 방법은 무엇입니까? foreach 루프를 사용하여 PHP 배열에서 중복 요소를 제거하는 방법은 무엇입니까? Apr 27, 2024 am 11:33 AM

foreach 루프를 사용하여 PHP 배열에서 중복 요소를 제거하는 방법은 무엇입니까?

PHP 배열 키 값 뒤집기: 다양한 방법의 성능 비교 분석 PHP 배열 키 값 뒤집기: 다양한 방법의 성능 비교 분석 May 03, 2024 pm 09:03 PM

PHP 배열 키 값 뒤집기: 다양한 방법의 성능 비교 분석

PHP 배열 다차원 정렬 연습: 간단한 시나리오부터 복잡한 시나리오까지 PHP 배열 다차원 정렬 연습: 간단한 시나리오부터 복잡한 시나리오까지 Apr 29, 2024 pm 09:12 PM

PHP 배열 다차원 정렬 연습: 간단한 시나리오부터 복잡한 시나리오까지

PHP 어레이 딥 카피(Array Deep Copy) 기술: 다양한 방법을 사용하여 완벽한 카피 달성 PHP 어레이 딥 카피(Array Deep Copy) 기술: 다양한 방법을 사용하여 완벽한 카피 달성 May 01, 2024 pm 12:30 PM

PHP 어레이 딥 카피(Array Deep Copy) 기술: 다양한 방법을 사용하여 완벽한 카피 달성

데이터 정렬에 PHP 배열 그룹화 기능 적용 데이터 정렬에 PHP 배열 그룹화 기능 적용 May 04, 2024 pm 01:03 PM

데이터 정렬에 PHP 배열 그룹화 기능 적용

PHP 배열 심층 복사 모범 사례: 효율적인 방법 발견 PHP 배열 심층 복사 모범 사례: 효율적인 방법 발견 Apr 30, 2024 pm 03:42 PM

PHP 배열 심층 복사 모범 사례: 효율적인 방법 발견

Douyin 추천 영상은 무슨 뜻인가요? Douyin을 사용하여 동영상을 추천하는 방법은 무엇입니까? Douyin 추천 영상은 무슨 뜻인가요? Douyin을 사용하여 동영상을 추천하는 방법은 무엇입니까? Mar 27, 2024 pm 03:01 PM

Douyin 추천 영상은 무슨 뜻인가요? Douyin을 사용하여 동영상을 추천하는 방법은 무엇입니까?

중복 요소를 찾는 데 있어 PHP 배열 그룹화 기능의 역할 중복 요소를 찾는 데 있어 PHP 배열 그룹화 기능의 역할 May 05, 2024 am 09:21 AM

중복 요소를 찾는 데 있어 PHP 배열 그룹화 기능의 역할

See all articles