개발! 딱 깔끔하고 센스있게!

PHP 에서 Array Iterator, Array Object 와 Array 의 차이 점 본문

개발 스크랩 메모/PHP

PHP 에서 Array Iterator, Array Object 와 Array 의 차이 점

렉사이 2020. 12. 9. 02:38

PHP 중 Array Iterator, Array Object 와 Array 가 기능 과 조작 에 있어 서 의 근본 적 인 차이 점 을 설명 할 수 있 습 니까?감사합니다.

대답 하 다.

배열 은 로 컬 pp 형식 입 니 다.

planguge construct array () 를 사용 하거나 phop 5.4 에서 시작 하 는 [] 를 사용 할 수 있 습 니 다.

Array Object 는 여러 팀 과 똑 같은 작업 방식 을 가 진 사람 입 니 다.

이것 은 새로운 키 워드 를 사용 하여 생 성 할 수 있 습 니 다.

Array Iteraator 는 Array Object 와 유사 하지만, 자신 에 게 는 세대교체 가 가능 하 다.

새 것 도 사용 할 게 요.


비교 배열 (Array Object / Array Iteraator)

그것들 은 모두 phop 의 문법, 예 를 들 어 사용 할 수 있다.

$array[] = 'foo'; $object[] = 'foo'; // adds new element with the expected numeric key $array['bar'] = 'foo'; $object['bar'] = 'foo'; // adds new element with the key "bar" foreach($array as $value); foreach($object as $value); // iterating over the elements 

하지만 이들 은 여전히 개체 와 배열 로 존재 하 므 로 주의 하 실 것 입 니 다.

is_array($array); // true is_array($object); // false is_object($array); // false is_object($object); // true 

대부분의 phop 배열 함수 들 은 배열 이 필요 하기 때문에 그곳 에서 사용 하 는 대상 이 잘못 되 었 습 니 다.

이런 기능 이 많 습 니 다.

예컨대.

sort($array); // works as expected sort($object); // Warning: sort() expects parameter 1 to be array, object given in ...... 

마지막 으로 대상 이 원 하 는 stdClass 대상 이 하 는 일 을 할 수 있 습 니 다.

즉, 대상 문법 을 사용 하여 공공 속성 을 방문 하 는 것 입 니 다.

$object->foo = 'bar'; // works $array->foo = 'bar'; // Warning: Attempt to assign property of non-object in .... 

배열 이 대상 보다 훨씬 빠르다.

한편, Array Object & Array Iteraator 류 는 사용 할 수 있 는 방법 을 정 의 했 고, 배열 에 대해 서 는 그런 것 이 없 었 습 니 다.


Array Object 와 Array Iterator 를 비교 합 니 다.

이 두 가지 유형의 주요 차 이 는 그들 이 가지 고 있 는 방법 에 있다.

Array Iterator 는 인 터 페 이 스 를 실현 합 니 다.

이 인 터 페 이 스 는 요소 에 대한 교체 / 순환 과 관련 된 방법 을 제공 합 니 다.

Array Object 에는 exchange Array 라 는 이름 의 방법 이 있 는데 이 방법 은 그 내부 배열 을 다른 배열 과 교환 하 는 방법 입 니 다.

Array Iterator 에서 이와 유사 한 일 을 하 는 것 은 새로운 상 대 를 만 들 든 다 는 것 을 의미 합 니 다.

옮 겨 다 니 는 키 를 반복 하거나 모든 단 추 를 취소 한 다음, 새 배열 에 있 는 요 소 를 하나씩 설정 하 는 것 을 의미 합 니 다.

다음 단계, Array Object 가 교체 되 지 않 기 때문에 foreach 에서 사용 할 때 내장 에 Array Iterator 대상 을 만 듭 니 다 (배열 과 같 음).이 는 php 가 원본 데이터 의 사본 을 만 들 겠 다 는 의미 와 현재 두 대상 이 같은 내용 을 가지 고 있다 는 뜻 이다.

대형 대형 배열 에 대해 서 는 이것 이 비효 율 로 증명 된다.

단, 코드 에 사용자 정의 바 꾸 기 를 사용 할 종 류 를 선택 할 수 있 습 니 다.


이것 이 너 에 게 도움 이 되 기 를 바란다.

이 답변 편집 을 환영 합 니 다.

Comments