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
'source' 카테고리의 다른 글
이행 시 부동이지만 이중화되지 않는 필드를 작성하는 방법 (0) | 2022.10.30 |
---|---|
테이블 nestj 자동 생성에 대한 TypeORM 요청 (0) | 2022.10.30 |
어레이를 통해 구현된 스택을 사용한 패러테제스 매칭.balanced()를 사용하여 스택이 비어 있는지 체크하기 위해 모든 '(')'에 대해 '(')를 누르고 '(')를 팝핑했습니다. (0) | 2022.10.30 |
MySQL에서 SELECT DISTINT와 GROUP BY 중 어느 쪽이 빠릅니까? (0) | 2022.10.30 |
React 함수/Hooks 컴포넌트에 componentDismount가 동등합니까? (0) | 2022.10.30 |