이 글은 주로 PHP 조건부 연산자에서 발생하는 문제와 해결 방법을 소개합니다. 이제 도움이 필요한 친구들이 참고할 수 있도록 공유하겠습니다.
#🎜🎜 #오늘 저는 PHP에서 조건부 연산자의 중첩 사용에 대한 문제 (ternaryexpression)
phenomenon먼저 C 언어 코드를 살펴보겠습니다(test.c):
#include<stdio.h> int main() { int x = 1; int shit = x == 1 ? 100 : x == 2 ? 200 : 300; printf("shit的值:%d\n", shit); return 0; }</stdio.h>컴파일 및 실행
root$ gcc test.c -o test && ./test shit的值:100답은 예상한 대로입니다. x==1이므로 100이 할당되기 때문입니다. 젠장. 그러나 위 코드를 PHP로 다시 작성하면(
test.php):
<?php $x = 1; $shit = $x == 1 ? 100 : $x == 2 ? 200 : 300; echo "shit的值:$shit\n";실행:
root$ php test.php shit的值:200#🎜 🎜#반환된 결과가 다른 것으로 나타났습니다. 이유는 무엇인가요?
Troubleshooting
(==) 및 조건 연산자 가 PHP (?:) 우선순위 문제는 PHP 공식 문서를 확인해 보겠습니다
우선 순위는 ?:(C 언어에서도 마찬가지)보다 높으므로 $shit = $x == 1 ? 100 :
$x == 2 ? 200 : 300;
은
$shit = ($x == 1) ? 100 : ($x == 2) ? 200 : 300;
과 동일하며 한 번 실행하면 true입니다. 연산자 우선순위로 인해 문제가 발생할 가능성을 배제할 수 있습니다.
그런데 공식 문서에는
연산자 조합 방향 예시 설명에 이런 문장이 있습니다.:
다음은 다음과 같습니다. 기사에 설명된 현상은 매우 유사하며 문제는 여기에 있어야 합니다. 몇 가지 조사 결과 다음과 같은 결론을 얻었습니다.Conclusion
int x = 1; int shit = x == 1 ? 100 : x == 2 ? 200 : 300; //等效于 int shit = x == 1 ? 100 : (x == 2 ? 200 : 300); //等效于 int shit = x == 1 ? 100 : (300);// 100
$x = 1; $shit = $x == 1 ? 100 : $x == 2 ? 200 : 300; //等效于 $shit = ($x == 1 ? 100 : $x == 2) ? 200 : 300; //等效于 $shit = (100) ? 200 : 300;// 200# 🎜🎜#PHP의 조건부 연산자 조합 방향으로 인해 C/C++와 같은 중첩된 조건부 연산자를 통해 if-elseif-elseif-else를 달성할 수 없습니다. 나중에 하위 표현식에 괄호를 추가하지 않는 한 표현식의 효과는 입니다. . 이 경우 다음과 같이 해결할 수 있습니다:
$shit = $x == 1 ? 100 : ($x == 2 ? 200 : 300);
$shit = $x == 1 ? 100 : ($x == 2 ? 200 : ($x== 3 ? 300 : ... ($x == 8 ? 800 : 900)))))));# 🎜🎜# 대괄호를 쌓지 않는 PHP의 작성 방법은 실행 결과 측면에서 C/C++와 일치하지 않고, 대괄호를 추가해야만 작성할 수 있으므로 예상한 결과를 얻을 수 있도록 기본 바인딩 방향을 변경하므로 PHP 문서에서는 간단히 설명하지 않습니다. 중첩된 조건부 연산자 사용을 권장합니다:
참고: 단일 내에서 둘 이상의 삼항 연산자를 사용할 때 PHP의
동작을 "스태킹"하지 않는 것이 좋습니다. 진술은 명백하지 않습니다위 내용은 이 글의 전체 내용입니다. 모든 분들의 학습에 도움이 되기를 바랍니다. 더 많은 관련 내용은 PHP 중국어 홈페이지를 주목해주세요! 관련 권장 사항:
프레임워크 개발의 종속성 주입, 컨테이너 및 모양 패턴에 대해 이야기해 보겠습니다(2부)
#🎜 🎜#
PHP의 높은 동시성 및 대규모 트래픽 문제를 해결하는 방법위 내용은 PHP 조건 연산자에서 발생하는 문제와 해결 방법에 대해의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!