>백엔드 개발 >PHP 튜토리얼 >PHP 문서의 삼항 연산자에 대한 주의 사항을 이해하지 못합니다.

PHP 문서의 삼항 연산자에 대한 주의 사항을 이해하지 못합니다.

WBOY
WBOY원래의
2016-10-11 14:23:371120검색

참고: 삼항 연산자는 명령문이므로 평가는 변수가 아니라 명령문의 결과입니다. 이는 참조로 변수를 반환하려는 경우 중요합니다. 참조로 반환하는 함수의 return $var == 42 ? $a : $b; 문은 작동하지 않으며 향후 버전의 PHP에서는 이에 대한 경고가 표시됩니다.

return $var == 42 ? $a : $b; 작동하지 않는다는 것은 무엇을 의미합니까? 값을 반환하는 것이 불가능합니까?

<code class="php">function test($var){
  return $var == 42 ? 1 : 2;
}

echo test(40);    //2</code>

테스트 중 반품이 가능합니다...

답글 내용:

참고: 삼항 연산자는 명령문이므로 평가는 변수가 아니라 명령문의 결과입니다. 이는 참조로 변수를 반환하려는 경우 중요합니다. 참조로 반환하는 함수의 return $var == 42 ? $a : $b; 문은 작동하지 않으며 향후 버전의 PHP에서는 이에 대한 경고가 표시됩니다.

return $var == 42 ? $a : $b; 작동하지 않는다는 것은 무엇을 의미합니까? 값을 반환하는 것이 불가능합니까?

<code class="php">function test($var){
  return $var == 42 ? 1 : 2;
}

echo test(40);    //2</code>

테스트 중 반품이 가능합니다...

"참조로 변수 반환" 시나리오에 영향을 미칩니다

예제 보기, get2가 예상한 결과를 얻을 수 없음

https://3v4l.org/2Q9ai

<code class="php"><?php

$data = new stdClass;
$data->a = 13;
$data->b = 42;

$var = &get1($data, true);
$var = 14;
var_dump($data);

$var2 = &get2($data, false);
$var2 = 43;
var_dump($data);

function &get1($data, $isA) {
    if($isA) {
        return $data->a;
    } else {
        return $data->b;
    }
}

function &get2($data, $isA) {
    return $isA ? $data->a : $data->b;
}</code>
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.