찾다
백엔드 개발PHP7PHP7의 데이터 유형

PHP7의 데이터 유형

Apr 25, 2019 am 09:15 AM
php7

PHP에서는 변수명 → zval, 변수값 → zend_value. 변수 메모리는 참조 카운팅을 통해 관리됩니다. PHP7에서는 참조 카운팅이 값 구조에 있습니다.

변수 유형:

헤더 파일은 PHP 소스 코드/zend/zend_types.h

에 있습니다. 내부 구현:

PHP는 zval 구조를 사용하여 변수와 다양한 유형의 변수 값을 나타냅니다. ​​zval 인간 결합 표현(예: zend_value)을 통해 내장됩니다.

zend_value는 공용체이며 코드는 다음과 같습니다.

ast, ptr, zv 이러한 유형은 커널 자체에서만 사용됩니다.

문자열:

PHP는 문자열에 대한 별도의 구조인 zend_string을 정의합니다. zend_value에서 str은 특정 구조를 가리킵니다. ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ

문자열 내용을 저장하는 val은 좀 특별합니다.

val은 char* 유형을 사용하지 않습니다. 문자열을 할당할 때 malloc(sizeof(zend_sting)+string length)과 같이 작동합니다. 즉, 문자열 내용을 저장하기 위해 더 많은 메모리가 할당됩니다. 메모리의 시작 위치는 val입니다.

하나의 메모리 할당(char*)을 저장할 수 있어 메모리 관리에 더욱 도움이 된다는 장점이 있습니다.

val의 추가 바이트(구조의 val[0] 대신 val[1])는 저장된 문자열의 마지막 문자를 저장하는 데 사용됩니다."

해결책: 충돌하는 버킷을 연결 목록으로 묶습니다. 즉, 중간 매핑 테이블은 버킷 대신 버킷 연결 목록을 매핑합니다. 검색할 때 이 연결 목록을 탐색하고 키를 하나씩 비교하여 대상을 찾아야 합니다. 요소.

HashTable은 arData 배열에서 충돌하는 요소의 저장 위치를 ​​기록합니다.

매핑 값 설정 시 중간 매핑 테이블에서 설정하려는 위치가 이전에 삽입된 요소(값이 초기화된 -1과 동일하지 않음)가 차지하고 있는 것을 확인한 후 기존 값 새로 삽입된 Bucket(즉, c를 삽입한 후 u2.next=0)에 저장되고, 매핑 테이블의 값을 새 Bucket의 저장 위치(즉, 매핑 테이블의 값)로 업데이트합니다. : 2).

참조:

참조는 다른 유형을 가리키는 구조로, C 언어의 포인터 개념과 유사합니다. 참조 유형 변수를 수정하면 수정 사항이 실제 참조되는 변수에 반영됩니다.

PHP에서는 $b = &$a와 같이 & 연산자를 통해 참조 변수가 생성됩니다. 실행 시 먼저 &로 작동되는 변수에 zend_reference 구조를 할당합니다. zval이 여기에 포함되어 있으면 이 zval의 값은 원래 zval의 값을 가리킨 다음 원래 zval의 유형을 IS_REFERENCE로 변경하고 원래 zval의 값은 새로 생성된 zend_reference 구조를 가리킵니다.

예:

$a = date("Y-m");$b = &$a;

$a는 문자열이며, &$a를 통해 참조 타입으로 변환되어 $b에 할당됩니다. from IS_STRING IS_REFERENCE의 경우 $a 값도 원래 문자열을 가리키는 zend_reference 구조로 변환됩니다.

$a 및 $b는 실제 값을 간접적으로 가리킵니다.

참조를 사용할 때는 주의하세요. 참조는 &를 통해서만 생성될 수 있으며 할당을 통해서는 전달될 수 없습니다.

위의 예에서와 같이 $b가 다른 변수에 할당된 경우 새 변수에 전달되는 값은 참조 자체가 아닌 실제 참조 값이 됩니다.

$a = date("Y-m");$b = &$a;$c = $b;   //如果想让$c也引用指向$a/$b引用的值,则:$c = &$b

위 내용은 PHP7의 데이터 유형의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
이 기사는 cnblogs에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

MinGW - Windows용 미니멀리스트 GNU

MinGW - Windows용 미니멀리스트 GNU

이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

에디트플러스 중국어 크랙 버전

에디트플러스 중국어 크랙 버전

작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

Atom Editor Mac 버전 다운로드

Atom Editor Mac 버전 다운로드

가장 인기 있는 오픈 소스 편집기

메모장++7.3.1

메모장++7.3.1

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

SublimeText3 영어 버전

SublimeText3 영어 버전

권장 사항: Win 버전, 코드 프롬프트 지원!