source

PHP 7의 <=>('Spaceship' 연산자)란 무엇입니까?

gigabyte 2022. 10. 30. 17:53
반응형

PHP 7의 <=>('Spaceship' 연산자)란 무엇입니까?

금년 11월에 발매되는 PHP 7은, 우주선(<=>) 오퍼레이터를 도입합니다.그것은 무엇이며 어떻게 작동합니까?

이 질문은 PHP 연산자에 대한 일반적인 참조 질문에 이미 답변이 있습니다.

<=>("Spaceship") 운영자는 다음과 같은 점에서 결합된 비교를 제공합니다.

Return 0 if values on either side are equal
Return 1 if the 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; //output  0
    echo 3 <=> 4; //output -1
    echo 4 <=> 3; //output  1

    //String Comparison

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

오퍼레이터를 도입한 RFC에 따르면$a <=> $b평가 대상:

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

내가 시도했던 모든 시나리오에서 실제로 그런 것처럼 보이지만, 엄밀히 말해 공식 문서는 약간 더 약한 보장만을 제공한다.$a <=> $b돌아온다

0보다 작거나 같거나 큰 정수$a각각 보다 작거나 같거나 크다$b

그럼에도 불구하고, 왜 그런 교환원을 원하십니까?RFC에서는 이 점에 대해 설명하고 있습니다.이는 (및 이와 유사한) 비교 함수를 보다 쉽게 기술할 수 있도록 하기 위한 것입니다.

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

첫 번째 인수가 두 번째 인수보다 각각 작거나 같거나 큰 것으로 간주되는 경우 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의 유용성 섹션에서 찾을 수 있습니다.

이치노 유사하다strcmp()version_compare()와 동일한 를 가진 모든 PHP 할 수 .<,<=,==,>=,>돌아오다0, 「」는 「」입니다.1이 더 '''가 더 크면'' '''가 더 크면'''-1오른쪽이 더 크다면.연산자가 하는 것과 합니다.<,<=,==,>= ★★★★★★★★★★★★★★★★★」>

자세한 내용은 여기를 클릭해 주세요.

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

반응형