IT story

PHP 7에서 <=> ( '우주선'연산자)는 무엇입니까?

hot-time 2020. 5. 24. 11:01
반응형

PHP 7에서 <=> ( '우주선'연산자)는 무엇입니까? [복제]


이 질문에는 이미 답변이 있습니다.

올해 11 월에 나올 PHP 7은 우주선 (<=>) 연산자를 소개 할 것입니다. 그것은 무엇이며 어떻게 작동합니까?

이 질문은 이미이 대답 PHP 사업자에 대한 우리의 일반적인 기준의 문제입니다.


<=>연산자는 다음과 같은 조합으로 비교를 제공합니다.

Return 0 if values on either side are equal
Return 1 if value on the left is greater
Return -1 if the value on the right is greater

결합 된 비교 연산자가 사용하는 규칙은 현재 PHP viz에서 사용하는 비교 연산자와 동일합니다. <, <=, ==, >=>. Perl 또는 Ruby 프로그래밍 배경을 가진 사람들은 PHP7에 제안 된이 새로운 연산자에 이미 익숙 할 것입니다.

   //Comparing Integers

    echo 1 <=> 1; //outputs 0
    echo 3 <=> 4; //outputs -1
    echo 4 <=> 3; //outputs 1

    //String Comparison

    echo "x" <=> "x"; // 0
    echo "x" <=> "y"; //-1
    echo "y" <=> "x"; //1

에 따르면 운영자 소개 된 RFC , $a <=> $b평가됩니다에를 :

  • 0이면 $a == $b
  • 경우 -1 $a < $b
  • 1이면 $a > $b

엄밀히 말하면 공식 문서$a <=> $b 는 반환 할 수있는 약간 약한 보증 만 제공 하지만 실제로 시도한 모든 시나리오에서 실제로 그런 것처럼 보입니다.

$a각각이보다 작 거나 같거나 큰 경우 0보다 작거나 같거나 0보다 큰 정수$b

어쨌든 왜 그런 연산자를 원하십니까? 다시, RFC 주소이 - 그것은 거의 전체의 더에 대한 쓰기 비교 기능을 편리하게하기 위해 usort(그리고 유사한 uasortuksort).

usort배열을 첫 번째 인수로 정렬하고 사용자 정의 비교 함수를 두 번째 인수로 정렬합니다. 이 비교 함수를 사용하여 배열의 한 쌍의 요소 중 더 큰 요소를 결정합니다. 비교 함수는 다음을 반환해야합니다.

제 1 인수가 각각 제 2 인수보다 작거나 같거나 큰 것으로 간주되는 경우 0보다 작거나 같거나 0보다 큰 정수

우주선 운영자는 이것을 간결하고 편리하게 만듭니다.

$things = [
    [
        'foo' => 5.5,
        'bar' => 'abc'
    ],
    [
        'foo' => 7.7,
        'bar' => 'xyz'
    ],
    [
        'foo' => 2.2,
        'bar' => 'efg'
    ]
];

// Sort $things by 'foo' property, ascending
usort($things, function ($a, $b) {
    return $a['foo'] <=> $b['foo'];
});

// Sort $things by 'bar' property, descending
usort($things, function ($a, $b) {
    return $b['bar'] <=> $a['bar'];
});

우주선 연산자를 사용하여 작성된 비교 함수의 더 많은 예 는 RFC 유용성 섹션 에서 찾을 수 있습니다 .


Its a new operator for combined comparison. Similar to strcmp() or version_compare() in behavior, but it can be used on all generic PHP values with the same semantics as <, <=, ==, >=, >. It returns 0 if both operands are equal, 1 if the left is greater, and -1 if the right is greater. It uses exactly the same comparison rules as used by our existing comparison operators: <, <=, ==, >= and >.

click here to know more

참고URL : https://stackoverflow.com/questions/30365346/what-is-the-spaceship-operator-in-php-7

반응형