이 글은 주로 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
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
$shit = $x == 1 ? 100 : ($x == 2 ? 200 : 300);
$shit = $x == 1 ? 100 : ($x == 2 ? 200 : ($x== 3 ? 300 : ... ($x == 8 ? 800 : 900)))))));
참고: 단일 내에서 둘 이상의 삼항 연산자를 사용할 때 PHP의
동작을 "스태킹"하지 않는 것이 좋습니다. 진술은 명백하지 않습니다위 내용은 이 글의 전체 내용입니다. 모든 분들의 학습에 도움이 되기를 바랍니다. 더 많은 관련 내용은 PHP 중국어 홈페이지를 주목해주세요! 관련 권장 사항:
프레임워크 개발의 종속성 주입, 컨테이너 및 모양 패턴에 대해 이야기해 보겠습니다(2부)
#🎜 🎜#
PHP의 높은 동시성 및 대규모 트래픽 문제를 해결하는 방법위 내용은 PHP 조건 연산자에서 발생하는 문제와 해결 방법에 대해의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!