찾다
백엔드 개발PHP 튜토리얼몇 가지 기만적인 PHP 인터뷰 질문을 시도해 보고 it_php 예제에 빠질지 확인하세요.

도덕적 질문에서 이 질문을 보고 매우 흥미로웠습니다. 함정을 여러분과 공유하고 여러분도 그 함정에 빠질지 알아보고 싶습니다.

질문 1

코드 복사 코드는 다음과 같습니다.

$arr = 배열(0=>1,"aa"=>2, 3, 4);

foreach($arr as $key=>$val){
Print($key == "aa" ? 5 : $val);
}

출력은 무엇입니까? 답이 1534라면 함정에 빠진 것입니다.
먼저 이 배열의 최종 구조를 살펴보겠습니다.
코드 복사 코드는 다음과 같습니다.

배열
(
[0] => 1
[aa] => 2
[1] =>3
[2] =>4
)

그런 다음 각 요소의 키를 반복하여 aa와 같지 않은지 확인합니다. 같으면 5로 바꿉니다. 정답이 5534라고 말하면 조금 놀라시겠죠? 0은 "aa"와 같나요? 예, 0은 "aa"입니다. 이 질문의 초점은 당신을 테스트하는 것입니다. PHP에서 두 값을 논리적으로 판단할 때 두 값의 유형이 일치하지 않으면 PHP는 자동으로 오른쪽 값을 왼쪽 유형으로 변환한 후 판단합니다. 따라서 "aa" 변환 정수는 0과 같으며 이는 자연스럽게 왼쪽의 0과 같습니다. 등호를 사용하여 이를 방지할 수 있습니다. 즉, 다음과 같이 작성하면 됩니다.
코드 복사 코드는 다음과 같습니다.

print($key === "aa" ? 5 : $val);

그러면 답은 1534이다.

질문 2

코드 복사 코드는 다음과 같습니다.

$i='11';
printf("%dn",printf("%d",printf("%d",$i)));

출력은 무엇입니까? 대답이 11 또는 111111이면 함정에 빠진 것입니다.
먼저 printf 함수를 이해하세요. Printf는 인쇄 함수일 뿐만 아니라 반환 값도 가지고 있습니다. 그게 포인트입니다
코드 복사 코드는 다음과 같습니다.

var_dump(printf("%d",$i));

위의 결과가 무엇일지 추측해 보세요. 먼저 printf는 변수 자체인 11을 인쇄한 다음 printf는 변수 문자열 길이의 값을 반환합니다. 11에는 두 개의 문자가 있으므로 2가 반환되므로 위 문의 실행 결과는 다음과 같습니다.
코드 복사 코드는 다음과 같습니다.
11int(2)

이 점을 명확히 한 후 다시 위의 테스트 문제를 살펴보세요. 우선순위에 따라 제한된 깊이 printf 함수는 11을 인쇄하고 2를 반환합니다. 그런 다음 두 번째 수준 printf 함수로 이동하여 2를 인쇄하고 1을 반환합니다. 마지막으로 세 번째 레이어에는 1이 직접 인쇄되므로 실행 결과는 1121이 됩니다.

질문 3

코드 복사 코드는 다음과 같습니다.

$a = 3;
$b = 5;
if($a = 5 || $b = 7) {
$a ;
$b ;
}
$a . " " . $b;

실행 결과는 무엇입니까? 6 8, 4 6 또는 6 6이라고 대답하면 함정에 빠진 것입니다.
첫 번째 함정은 답이 4 6 이라고 생각하는 것입니다. 실수로 $a = 5 || $b = 7 을 $a == 5 || 로 착각했을 수도 있습니다. 이는 초보자가 흔히 저지르는 실수입니다.

두 번째 함정, 답은 6 8이라고 생각하세요. $a = 5 || $b = 7이라는 사기를 꿰뚫어 보셨지만, 특정 표현식의 결과가 true가 될 때까지 논리적 OR이 순차적으로 실행되는 한 다음 표현식은 더 이상 실행되지 않는다는 사실을 눈치 채지 못하셨습니다. a = 5 true가 반환되면 후속 $b=7이 실행되지 않습니다.
세 번째 함정은 답이 6 6이라고 생각하는 것입니다. 자, 논리 OR의 규칙을 살펴보았으므로 $a=5는 실행되고 $b=7은 실행되지 않지만 이것이 논리식이라고 생각하지 않았으며 $a에 반환되는 값은 다음과 같아야 합니다. 부울 값으로 변환됩니다. 이렇게 보세요.

따라서 위의 세 가지 트랩 후에는 답이 무엇인지 알아야 합니다. 실제로 $a가 true가 되면 echo $a의 출력은 1이고 $b의 값은 변경되지 않으며 결과는 다음과 같습니다. 1 6.

질문 4

코드 복사 코드는 다음과 같습니다.

$count = 5;
함수 get_count() {
​ 정적 $count = 0;
$count 반환 ;
}
$count;
get_count();
echo get_count();

실행 결과는 무엇입니까? 2라고 답하셨다면 축하드립니다. 함정에 빠진 것입니다.
실제로 이 질문은 주로 두 가지 사항을 테스트합니다. 첫 번째 사항은 정적 정적 유형입니다. 이러한 종류의 값은 항상 정적입니다. 첫 번째 호출은 0으로 선언되고 증분은 1입니다. 두 번째로 호출되면 1이 2로 증가됩니다. 그런데 사실 여기에는 또 다른 함정이 있는데, 그것이 a와 a의 차이입니다. 전자가 먼저 증가하고 후자가 먼저 반환된 값을 나중에 증가시키므로 결과는 1이 됩니다.

질문 5

코드 복사 코드는 다음과 같습니다.

$a = 개수 ("567") 개수(null) 개수(false);
에코 $a;

3이나 1이라고 답했다면 축하드립니다. 함정에 빠진 겁니다.
count(null)은 0이므로 false도 값으로 계산됩니다. 따라서 count(false)는 1과 같습니다.

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
PHP의 초록 클래스 또는 인터페이스에 대한 특성과 언제 특성을 사용 하시겠습니까?PHP의 초록 클래스 또는 인터페이스에 대한 특성과 언제 특성을 사용 하시겠습니까?Apr 10, 2025 am 09:39 AM

PHP에서, 특성은 방법 재사용이 필요하지만 상속에 적합하지 않은 상황에 적합합니다. 1) 특성은 클래스에서 다중 상속의 복잡성을 피할 수 있도록 수많은 방법을 허용합니다. 2) 특성을 사용할 때는 대안과 키워드를 통해 해결할 수있는 방법 충돌에주의를 기울여야합니다. 3) 성능을 최적화하고 코드 유지 보수성을 향상시키기 위해 특성을 과도하게 사용해야하며 단일 책임을 유지해야합니다.

DIC (Dependency Injection Container) 란 무엇이며 PHP에서 사용하는 이유는 무엇입니까?DIC (Dependency Injection Container) 란 무엇이며 PHP에서 사용하는 이유는 무엇입니까?Apr 10, 2025 am 09:38 AM

의존성 주입 컨테이너 (DIC)는 PHP 프로젝트에 사용하기위한 객체 종속성을 관리하고 제공하는 도구입니다. DIC의 주요 이점에는 다음이 포함됩니다. 1. 디커플링, 구성 요소 독립적 인 코드는 유지 관리 및 테스트가 쉽습니다. 2. 유연성, 의존성을 교체 또는 수정하기 쉽습니다. 3. 테스트 가능성, 단위 테스트를 위해 모의 객체를 주입하기에 편리합니다.

SPL SplfixedArray 및 일반 PHP 어레이에 비해 성능 특성을 설명하십시오.SPL SplfixedArray 및 일반 PHP 어레이에 비해 성능 특성을 설명하십시오.Apr 10, 2025 am 09:37 AM

SplfixedArray는 PHP의 고정 크기 배열로, 고성능 및 메모리 사용이 필요한 시나리오에 적합합니다. 1) 동적 조정으로 인한 오버 헤드를 피하기 위해 생성 할 때 크기를 지정해야합니다. 2) C 언어 배열을 기반으로 메모리 및 빠른 액세스 속도를 직접 작동합니다. 3) 대규모 데이터 처리 및 메모리에 민감한 환경에 적합하지만 크기가 고정되어 있으므로주의해서 사용해야합니다.

PHP는 파일 업로드를 어떻게 단단히 처리합니까?PHP는 파일 업로드를 어떻게 단단히 처리합니까?Apr 10, 2025 am 09:37 AM

PHP는 $ \ _ 파일 변수를 통해 파일 업로드를 처리합니다. 보안을 보장하는 방법에는 다음이 포함됩니다. 1. 오류 확인 확인, 2. 파일 유형 및 크기 확인, 3 파일 덮어 쓰기 방지, 4. 파일을 영구 저장소 위치로 이동하십시오.

Null Coalescing 연산자 (??) 및 Null Coalescing 할당 연산자 (?? =)은 무엇입니까?Null Coalescing 연산자 (??) 및 Null Coalescing 할당 연산자 (?? =)은 무엇입니까?Apr 10, 2025 am 09:33 AM

JavaScript에서는 NullCoalescingOperator (??) 및 NullCoalescingAssignmentOperator (?? =)를 사용할 수 있습니다. 1. 2. ??= 변수를 오른쪽 피연산자의 값에 할당하지만 변수가 무효 또는 정의되지 않은 경우에만. 이 연산자는 코드 로직을 단순화하고 가독성과 성능을 향상시킵니다.

CSP (Content Security Policy) 헤더 란 무엇이며 왜 중요한가요?CSP (Content Security Policy) 헤더 란 무엇이며 왜 중요한가요?Apr 09, 2025 am 12:10 AM

CSP는 XSS 공격을 방지하고 리소스로드를 제한하여 웹 사이트 보안을 향상시킬 수 있기 때문에 중요합니다. 1.CSP는 HTTP 응답 헤더의 일부이며 엄격한 정책을 통해 악의적 인 행동을 제한합니다. 2. 기본 사용법은 동일한 원점에서 자원을로드 할 수있는 것입니다. 3. 고급 사용량은 특정 도메인 이름을 스크립트와 스타일로드 할 수 있도록하는 것과 같은보다 세밀한 전략을 설정할 수 있습니다. 4. Content-Security Policy 보고서 전용 헤더를 사용하여 CSP 정책을 디버그하고 최적화하십시오.

HTTP 요청 방법 (Get, Post, Put, Delete 등)이란 무엇이며 언제 각각을 사용해야합니까?HTTP 요청 방법 (Get, Post, Put, Delete 등)이란 무엇이며 언제 각각을 사용해야합니까?Apr 09, 2025 am 12:09 AM

HTTP 요청 방법에는 각각 리소스를 확보, 제출, 업데이트 및 삭제하는 데 사용되는 Get, Post, Put and Delete가 포함됩니다. 1. GET 방법은 리소스를 얻는 데 사용되며 읽기 작업에 적합합니다. 2. 게시물은 데이터를 제출하는 데 사용되며 종종 새로운 리소스를 만드는 데 사용됩니다. 3. PUT 방법은 리소스를 업데이트하는 데 사용되며 완전한 업데이트에 적합합니다. 4. 삭제 방법은 자원을 삭제하는 데 사용되며 삭제 작업에 적합합니다.

HTTPS 란 무엇이며 웹 애플리케이션에 중요한 이유는 무엇입니까?HTTPS 란 무엇이며 웹 애플리케이션에 중요한 이유는 무엇입니까?Apr 09, 2025 am 12:08 AM

HTTPS는 HTTP를 기반으로 보안 계층을 추가하는 프로토콜로, 주로 암호화 된 데이터를 통해 사용자 개인 정보 및 데이터 보안을 보호합니다. 작업 원칙에는 TLS 핸드 셰이크, 인증서 확인 및 암호화 된 커뮤니케이션이 포함됩니다. HTTP를 구현할 때는 인증서 관리, 성능 영향 및 혼합 콘텐츠 문제에주의를 기울여야합니다.

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를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

안전한 시험 브라우저

안전한 시험 브라우저

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

SublimeText3 Mac 버전

SublimeText3 Mac 버전

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

Atom Editor Mac 버전 다운로드

Atom Editor Mac 버전 다운로드

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

SublimeText3 영어 버전

SublimeText3 영어 버전

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

메모장++7.3.1

메모장++7.3.1

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