찾다
백엔드 개발PHP 문제PHP 배열은 참조 유형입니까?

PHP 배열은 참조 유형입니까?

Sep 20, 2022 pm 07:08 PM
phpPHP 배열

PHP 배열은 참조 유형이 아니지만 값 유형입니다. 배열에 값을 할당할 때 다른 변수(복사본)가 생성되므로 다른 변수를 수정해도 배열 자체에는 영향을 미치지 않습니다. 그리고 PHP 배열 전송은 값 전송입니다. 함수를 호출할 때 PHP 배열을 형식 매개변수에 실제 매개변수로 할당하고 함수에서 이를 수정해도 배열 자체에는 영향을 미치지 않습니다. 이는 이 프로세스에서의 전송이 값 전송임을 나타냅니다. 배열 변수는 이 배열 자체에 대한 참조가 아닙니다.

PHP 배열은 참조 유형입니까?

이 튜토리얼의 운영 환경: Windows 7 시스템, PHP 버전 8.1, DELL G3 컴퓨터

PHP에서는 문자열, 정수, 부동 소수점, 배열 등 대부분의 변수 유형이 값 유형입니다. , 클래스와 객체는 참조형이므로 사용 시 주의가 필요합니다.

PHP 변수는 이렇게 메모리에 저장됩니다. 변수가 저장하는 것은 값의 내용이 아니라 주소입니다. 예:

$a = 1;

변수 $a에 값 1이 직접 저장되는 것 같습니다. 실제 상황은 PHP 인터프리터가 변수 $a를 생성하고 값 1을 메모리 어딘가에 저장한 다음 변수 $a에 값의 주소를 저장한다는 것입니다.

값을 구해야 할 때는 먼저 변수 $a에서 주소를 찾은 다음, 그 주소를 기준으로 변수의 값을 찾아보세요.

아래를 살펴보세요:

echo $a;

는 1을 출력합니다. PHP 인터프리터는 다음과 같이 코드를 완성합니다. $a에 저장된 주소를 찾고, 주소를 기반으로 메모리 어딘가에 저장된 값을 찾아 화면에 출력합니다.

간단한 코드 한 줄처럼 보이지만 과정은 이렇습니다.

더 자세히 살펴보세요.

$a = 1;
$b = &$a;

여기서 $b 변수는 흥미로운 작업을 수행합니다. & 기호는 $a 변수에 저장된 주소를 가져와 $b 변수에 저장합니다.

그런 다음 다음 코드를 사용하면

echo $b;

결과도 1로 출력됩니다. PHP 인터프리터는 먼저 $b에 저장된 주소를 꺼낸 다음 주소를 기준으로 값을 찾습니다. 다음 작업을 수행하면

$a = 2;
echo $b; //输出2

$a의 값을 변경하면 $b도 변경된다는 것을 알 수 있습니다. 실제로는 반대로 $b의 값이 변경되면 $a의 값도 그에 따라 변경됩니다.

이 시점에서 변수 $a와 $b는 동일한 주소를 저장하고 동일한 값을 가리킨다는 것을 확인할 수 있습니다.

그러면 동일한 변수를 나타낸다고 결론을 내릴 수 있습니다.

더 요약하자면 두 변수가 동일한 주소를 저장하면 동일한 변수라고 결론을 내릴 수 있습니다.

이제 일부 콘텐츠를 이해했으므로 값 유형과 참조 유형을 소개하기 시작합니다.

먼저 다음 코드를 살펴보겠습니다.

$a = 1;
$b = $a;
$a = 2;
echo $b; //输出 1

$a의 값을 $b에 할당합니다. 즉, $a의 값을 변경한 후에도 $b의 값은 변경되지 않습니다. 서로 다른 주소를 가리키는 두 개의 서로 다른 변수입니다. 다양한 변수를 생성하는 이러한 할당 형식을 값 유형이라고 합니다.

다시 보세요:

class User{
 public $name = ‘Tome‘;
}
$a = new User;
$b = $a;
$a->name = ‘Jim‘;
echo $b->name; //输出 Jim

마찬가지로 $a의 값을 $b에 할당합니다. $a를 변경하면 $b도 변경됩니다. 즉, $a와 $b는 동일한 변수이며 동일한 주소를 가리킵니다. 새 변수를 생성하지 않는 이러한 할당 형식을 참조 유형이라고 합니다.

php 배열 값 유형

PHP에서 전달되는 배열은 참조가 아닌 값으로 전달됩니다.

함수 호출 시 PHP 배열을 실제 매개변수로 형식 매개변수에 할당하고, 함수에서 수정해도 배열 자체에는 영향을 미치지 않습니다.

이 프로세스의 전송은 값에 의한 것임을 설명합니다. 배열 변수는 배열 자체에 대한 참조가 아니며, PHP 배열 자체는 값의 형태로 존재하며 형식 매개변수는 배열의 복사본입니다.

이것은 다른 언어(예: c, Js 등)와 매우 다르기 때문에 주목할 가치가 있습니다!

예제는 다음과 같습니다.

$arr = array(
    'name' => 'corn',
    'age' => '24',
);
test_arr($arr);
function test_arr($arr){
    $arr['name'] = 'qqyumidi';
}
print_r($arr); //result: Array ( [name] => corn [age] => 24 )

js 코드는 다음과 같습니다.

var arr = new Array('corn', '24');
test_arr(arr);
function test_arr(arr){
    arr[0] = 'qqyumidi';
}
console.log(arr);  //result:["qqyumidi", "24"]

PHP에서 값 전송을 위해 참조 전송 효과를 사용해야 하는 경우 형식 매개변수 앞에 주소 문자 &를 추가하면 됩니다. .

$aa = 100;
test_vars($aa);
function test_vars(&$aa){
    $aa = 200;
}
print_r($aa);   //result: 200

추천 학습: "PHP 비디오 튜토리얼"

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

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
산과 기본 데이터베이스 : 차이 및 각각을 사용 해야하는시기.산과 기본 데이터베이스 : 차이 및 각각을 사용 해야하는시기.Mar 26, 2025 pm 04:19 PM

이 기사는 산 및 기본 데이터베이스 모델을 비교하여 특성과 적절한 사용 사례를 자세히 설명합니다. 산은 금융 및 전자 상거래 애플리케이션에 적합한 데이터 무결성 및 일관성을 우선시하는 반면 Base는 가용성 및

PHP 보안 파일 업로드 : 파일 관련 취약점 방지.PHP 보안 파일 업로드 : 파일 관련 취약점 방지.Mar 26, 2025 pm 04:18 PM

이 기사는 코드 주입과 같은 취약점을 방지하기 위해 PHP 파일 업로드 보안에 대해 설명합니다. 파일 유형 유효성 검증, 보안 저장 및 오류 처리에 중점을 두어 응용 프로그램 보안을 향상시킵니다.

PHP 입력 유효성 검증 : 모범 사례.PHP 입력 유효성 검증 : 모범 사례.Mar 26, 2025 pm 04:17 PM

기사는 내장 함수 사용, 화이트리스트 접근 방식 및 서버 측 유효성 검사와 같은 기술에 중점을 둔 보안을 향상시키기 위해 PHP 입력 유효성 검증에 대한 모범 사례를 논의합니다.

PHP API 요율 제한 : 구현 전략.PHP API 요율 제한 : 구현 전략.Mar 26, 2025 pm 04:16 PM

이 기사는 토큰 버킷 및 누출 된 버킷과 같은 알고리즘을 포함하여 PHP에서 API 요율 제한을 구현하고 Symfony/Rate-Limiter와 같은 라이브러리 사용 전략에 대해 설명합니다. 또한 모니터링, 동적 조정 요율 제한 및 손도 다룹니다.

PHP 비밀번호 해싱 : password_hash 및 password_verify.PHP 비밀번호 해싱 : password_hash 및 password_verify.Mar 26, 2025 pm 04:15 PM

이 기사에서는 PHP에서 암호를 보호하기 위해 PHP에서 Password_hash 및 Password_Verify 사용의 이점에 대해 설명합니다. 주요 주장은 이러한 기능이 자동 소금 생성, 강한 해싱 알고리즘 및 Secur를 통해 암호 보호를 향상 시킨다는 것입니다.

OWASP Top 10 PHP : 일반적인 취약점을 설명하고 완화하십시오.OWASP Top 10 PHP : 일반적인 취약점을 설명하고 완화하십시오.Mar 26, 2025 pm 04:13 PM

이 기사는 PHP 및 완화 전략의 OWASP Top 10 취약점에 대해 설명합니다. 주요 문제에는 PHP 응용 프로그램을 모니터링하고 보호하기위한 권장 도구가 포함 된 주입, 인증 파손 및 XSS가 포함됩니다.

PHP XSS 예방 : XSS로부터 보호하는 방법.PHP XSS 예방 : XSS로부터 보호하는 방법.Mar 26, 2025 pm 04:12 PM

이 기사는 PHP의 XSS 공격을 방지하기위한 전략, 입력 소독, 출력 인코딩 및 보안 향상 라이브러리 및 프레임 워크 사용에 중점을 둔 전략에 대해 설명합니다.

PHP 인터페이스 대 추상 클래스 : 각각을 사용할 때.PHP 인터페이스 대 추상 클래스 : 각각을 사용할 때.Mar 26, 2025 pm 04:11 PM

이 기사는 각각의 사용시기에 중점을 둔 PHP의 인터페이스 및 추상 클래스 사용에 대해 설명합니다. 인터페이스는 관련없는 클래스 및 다중 상속에 적합한 구현없이 계약을 정의합니다. 초록 클래스는 일반적인 기능을 제공합니다

See all articles

핫 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 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

WebStorm Mac 버전

WebStorm Mac 버전

유용한 JavaScript 개발 도구

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

Atom Editor Mac 버전 다운로드

Atom Editor Mac 버전 다운로드

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

DVWA

DVWA

DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

안전한 시험 브라우저

안전한 시험 브라우저

안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.