복붙노트

PHP 연산자 "?"와 ":"는 무엇이며 무엇을합니까?

PHP

PHP 연산자 "?"와 ":"는 무엇이며 무엇을합니까?

무엇입니까? 및 : PHP의 연산자?

예 :

(($request_type == 'SSL') ? HTTPS_SERVER : HTTP_SERVER)

해결법

  1. ==============================

    1.이것은 조건부 연산자입니다.

    이것은 조건부 연산자입니다.

    $x ? $y : $z
    

    "$ x가 true이면 $ y를 사용하고, 그렇지 않으면 $ z를 사용합니다"를 의미합니다.

    또한 짧은 형식입니다.

    $x ?: $z
    

    "$ x가 true이면 $ x를 사용하고 그렇지 않으면 $ z를 사용합니다"를 의미합니다.

    사람들은 당신에게 그것을 말할 것입니까? : "삼항 연산자"입니다. 이것은 잘못된 것입니다. ? :는 삼항 연산자이며 세 개의 피연산자가 있음을 의미합니다. 사람들은 주어진 언어가 가지고있는 유일한 삼항 연산자이기 때문에 그 이름이 "삼항 연산자"라고 생각합니다.

  2. ==============================

    2.삼항 연산자 란 무엇입니까?

    삼항 연산자 란 무엇입니까?

    삼자? : if와 else에 대한 속기. 그것은 기본적입니다. 공식적인 설명에 대한 자세한 내용은이 페이지의 아래쪽에있는 "삼항 연산자"를 참조하십시오.

    PHP 5.3부터 :

    PHP 7.0부터

    PHP 5에서 잠재적으로 존재하지 않는 변수와 함께 삼항 항을 사용하려면 삼항 구문의 시작 부분에서 isset ()을 수행해야합니다.

    $result = isset($nonExistentVariable) ? $nonExistentVariable : ‘default’;
    

    PHP 7에서는 다음과 같이 대신 할 수 있습니다 :

    $result = $nonExistentVariable ?? ‘default’;
    

    Null Coalesce 연산자는 빈 문자열에는 사용할 수 없으므로이를 염두에 두십시오. 이것에 대한 좋은 점은 체인의 각 변수가 존재하는지 여부에 따라 일종의 백업을 제공하면서 여러 변수에 대한 여러 검사를 연산자에 묶을 수 있다는 것입니다.

    $user = $userImpersonatingAnotherUser ?? $loggedInUser ?? “Guest”;
    

    PHP에서 사용자가 로그인 할 수있는 시스템에서는 관리자가 테스트 목적으로 다른 사용자로 가장 할 수 있습니다. 위의 예에서 사용자가 다른 사용자로 가장하지 않고 로그인 한 사용자도 존재하지 않으면 사용자는 게스트 사용자가됩니다. 더 많은 내용을 읽어 보시고 아직 이해가 안되면 3 진수가 무엇인지, 어떻게 사용되는지 확인한 다음이 비트로 돌아와 새로운 PHP

    3 진수는 어떻게 사용됩니까?

    다음은 일반적인 if 문이 보이는 방식입니다.

    if (isset($_POST['hello']))
    {
        $var = 'exists';
    }
    else
    {
        $var = 'error';
    }
    

    터너리로 줄이자.

    $var = isset($_POST['hello']) ? 'exists' : 'error';
                     ^            ^     ^    ^     |
                     |           then   |   else   |
                     |                  |          |
              if post isset         $var=this   $var=this
    

    훨씬 짧지 만 읽을 수는 없습니다. 앞의 예제에서 $ var와 같은 변수를 설정하는 데 사용할 수있을뿐만 아니라 echo를 사용하여이 작업을 수행하고 변수가 false인지 여부를 확인할 수도 있습니다.

    $isWinner = false;
    
    // Outputs 'you lose'
    echo ($isWinner) ? 'You win!' : 'You lose';
    
    // Same goes for return
    return ($isWinner) ? 'You win!' : 'You lose';
    

    왜 사람들은 그것을 사용합니까?

    제 삼자들은 섹시하다고 생각합니다. 일부 개발자는 과시하고 싶지만, 때로는 PHP 5.4의 최신 짧은 에코 (echos)와 같은 다른 기능과 함께 사용하면 코드에서 멋지게 보일 수 있습니다.

    <?php 
        $array = array(0 => 'orange', 1 => 'multicoloured'); 
    ?>
    
    <div>
        <?php foreach ($array as $key => $value) { ?>
            <span><?=($value==='multicoloured')?'nonsense':'pointless'?></span>
        <?php } ?>
    </div>
    
    <!-- Outputs:
        <span>
            pointless
        </span>
        <span>
            nonsense
        </span> 
    -->
    

    주제를 약간 벗어나면 '보기 / 템플릿'에있을 때 (MVC 패러다임을 통해 문제를 구분하는 경우) 가능한 한 서버 측 로직을 거의 필요로하지 않습니다. 그래서, 삼항과 다른 짧은 코드를 사용하는 것이 때로는 최선의 방법입니다. "다른 짧은 코드"는 다음과 같은 의미입니다.

    if ($isWinner) :
        // Show something cool
    endif;
    

    참고로, 나는 개인적으로 이런 종류의 속기가 마음에 들지 않는다.

    삼항 연산자는 얼마나 빠릅니까?

    사람들은 마이크로 최적화를 좋아합니다. 그들은 단지합니다. 그래서 몇몇 사람들은 정상적인 if / else 문과 비교할 때 삼항과 같은 것보다 훨씬 빠른 것을 알고 있어야합니다.

    이 게시물을 읽고, 그 차이는 약 0.5ms입니다. 그게 많아!

    아 잠깐, 아니야. 반복적으로 수천 명의 사람들을 수천 명으로 대할 경우에만 많은 일입니다. 너는하지 않을 것이다. 속도 최적화에 대해 전혀 염려하지 마십시오. 여기서는 절대 의미가 없습니다.

    삼항 문자를 사용하지 않을 때

    코드는 다음과 같아야합니다.

    분명히 이것은 사람의 지능과 코딩 지식 / 코드를 볼 때 이러한 개념에 대한 전반적인 이해의 대상이됩니다. 이전 예제와 같은 단일 3 진수는 괜찮습니다. 다음과 같이하면되지만, 수행해야하는 것은 아닙니다.

    echo ($colour === 'red') ? "Omg we're going to die" :
         ($colour === 'blue' ? "Ah sunshine and daisies" :
         ($colour === 'green' ? "Trees are green"
         : "The bloody colour is orange, isn't it? That was pointless."));
    

    그것은 세 가지 이유로 무의미했습니다.

    결론

    Ternaries는 실제로 간단하고 대략 너무 위로 얻는 것을 아무것도 아닙니다. 어떤 속도 향상을 고려하지 마라. 그것은 정말로 차이를 만들지 않을 것이다. 단순하고 멋지게 보이면 코드를 사용하고 나중에 다른 사람들이 코드를 읽을 수 있도록하십시오. 그것이 3 진을 의미하지 않는다면, 3 진을 사용하지 마십시오.

  3. ==============================

    3.삼항 연산자라고합니다. 첫 번째 표현식이 true로 평가되면 HTTPS_SERVER가 사용되며, 그렇지 않으면 HTTP_SERVER가 선택됩니다.

    삼항 연산자라고합니다. 첫 번째 표현식이 true로 평가되면 HTTPS_SERVER가 사용되며, 그렇지 않으면 HTTP_SERVER가 선택됩니다.

    기본적으로 if 문이고, 위의 코드는 다음과 같이 다시 작성할 수 있습니다.

    if ($request_type == 'SSL') {
       HTTPS_SERVER;
    }
    else {
       HTTP_SERVER;
    }
    
  4. ==============================

    4.이것은 삼항 조건 연산자라고도합니다. Ternary는 x와 같이 세 가지 인수가 있음을 의미합니다. y : z. 기본적으로 x가 true인지 확인합니다. 있는 경우이 연산 대신 y를 입력하고, 그렇지 않으면 z를 입력합니다.

    이것은 삼항 조건 연산자라고도합니다. Ternary는 x와 같이 세 가지 인수가 있음을 의미합니다. y : z. 기본적으로 x가 true인지 확인합니다. 있는 경우이 연산 대신 y를 입력하고, 그렇지 않으면 z를 입력합니다.

    $hello = $something ? "Yes, it's true" : "No, it's false";
    
  5. ==============================

    5.조건부 연산자? : 조건을 검사하고 조건의 값에 따라 값을 선택하는 데 사용되는 연산자입니다. 다음과 같은 형식으로 표현됩니다.

    조건부 연산자? : 조건을 검사하고 조건의 값에 따라 값을 선택하는 데 사용되는 연산자입니다. 다음과 같은 형식으로 표현됩니다.

    variable = condition ? expression1 : expression2;
    

    그것은 다음과 같이 작동합니다 ...

    예 :

    x = (a>b) ? 5 : 9
    

    여기서, x에 대하여, 먼저 조건 (a> b)가 평가된다. 이 조건이 참이되면 x는 값 5가됩니다 (즉, x = 5). 그러나 조건 (a> b)가 거짓이되면 x는 값 9 (즉, x = 9)를 얻습니다.

    삼항 연산자

    가끔 조건 연산자? : 또한 삼항 연산자라고합니다. 이는 3 개의 피연산자가 관련되어 있기 때문입니다. 예 :

    x ? y : z
    

    여기서 x, y 및 z는 세 개의 피연산자입니다. 조건 x가 true이면 값 y가 할당되고 그렇지 않으면 값 z가 할당됩니다.

  6. ==============================

    6.문장을 쓰는 짧은 방법입니다. 자바, 자바 스크립트 등의 다른 언어에서도 사용됩니다.

    문장을 쓰는 짧은 방법입니다. 자바, 자바 스크립트 등의 다른 언어에서도 사용됩니다.

    귀하의 코드,

    $protocol = $request_type == 'SSL' ? HTTPS_SERVER : HTTP_SERVER;
    

    다음과 같이 작성할 수 있습니다.

    if ($request_type == 'SSL')
        $protocol = HTTPS_SERVER;
    else
        $protocol = HTTP_SERVER;
    
  7. ==============================

    7.그것은 한 줄 if 문입니다 :

    그것은 한 줄 if 문입니다 :

    condition ? true : false
    

    귀하의 경우에 일반 if 문으로 변환 된 것은 다음과 같습니다.

    if($request_type == 'SSL') HTTPS_SERVER;
    else HTTP_SERVER;
    
  8. ==============================

    8.이것은 기본적으로 if-else 문을 작성하는 멋진 방법입니다. 어떤 사람들은 읽기가 더 쉽다고 말합니다.

    이것은 기본적으로 if-else 문을 작성하는 멋진 방법입니다. 어떤 사람들은 읽기가 더 쉽다고 말합니다.

    Wikipedia의 삼항 연산자

  9. ==============================

    9.존 T가 말했듯이, 그것은 삼항 연산자 (ternary operator)라고 불리며 본질적으로 if / else 구문의 축약 버전입니다. 귀하의 예제는 전체 if / else 문과 같이 읽을 수 있습니다.

    존 T가 말했듯이, 그것은 삼항 연산자 (ternary operator)라고 불리며 본질적으로 if / else 구문의 축약 버전입니다. 귀하의 예제는 전체 if / else 문과 같이 읽을 수 있습니다.

    if($request_type == 'SSL')
    {
        HTTPS_SERVER;
    }
    else
    {
        HTTP_SERVER;
    }
    
  10. from https://stackoverflow.com/questions/1080247/what-are-the-php-operators-and-called-and-what-do-they-do by cc-by-sa and MIT license