반응형
클래스 개인 함수와 함께 PHP에서 usort 사용
함수에 usort를 사용하는 것은 그렇게 복잡하지 않습니다.
이것은 내가 선형 코드에서 전에했던 것입니다.
function merchantSort($a,$b){
return ....// stuff;
}
$array = array('..','..','..');
내가 단순히 할 정렬
usort($array,"merchantSort");
이제 코드를 업그레이드하고 모든 전역 기능을 제거하고 적절한 위치에 배치합니다. 이제 모든 코드가 클래스에 있으며 usort 함수를 사용하여 간단한 함수 대신 객체 메소드 인 매개 변수로 배열을 정렬하는 방법을 알 수 없습니다.
class ClassName {
...
private function merchantSort($a,$b) {
return ...// the sort
}
public function doSomeWork() {
...
$array = $this->someThingThatReturnAnArray();
usort($array,'$this->merchantSort'); // ??? this is the part i can't figure out
...
}
}
문제는 usort () 함수 내에서 객체 메소드를 어떻게 호출합니까?
정렬 함수를 정적으로 만드십시오.
private static function merchantSort($a,$b) {
return ...// the sort
}
두 번째 매개 변수에 배열을 사용하십시오.
$array = $this->someThingThatReturnAnArray();
usort($array, array('ClassName','merchantSort'));
- 매뉴얼 페이지를여십시오 http://www.php.net/usort
- 유형
$value_compare_func
이callable
- 링크 된 키워드를 클릭하여 http://php.net/manual/en/language.types.callable.php에 연결 하십시오
- 구문이
array($this, 'merchantSort')
다음을 통과해야합니다 $this
.usort( $myArray, array( $this, 'mySort' ) );
전체 예 :
class SimpleClass
{
function getArray( $a ) {
usort( $a, array( $this, 'nameSort' ) ); // pass $this for scope
return $a;
}
private function nameSort( $a, $b )
{
return strcmp( $a, $b );
}
}
$a = ['c','a','b'];
$sc = new SimpleClass();
print_r( $sc->getArray( $a ) );
이 예에서는 AverageVote라는 배열 내부의 필드를 기준으로 정렬하고 있습니다.
호출 내에 메소드를 포함시킬 수 있습니다. 이는 더 이상 클래스 범위 문제가 없음을 의미합니다.
usort($firstArray, function ($a, $b) {
if ($a['AverageVote'] == $b['AverageVote']) {
return 0;
}
return ($a['AverageVote'] < $b['AverageVote']) ? -1 : 1;
});
Laravel (5.6) 모델 클래스에서 나는 이것을 이렇게 불렀습니다. 두 방법 모두 Windows 64 비트에서 PHP 7.2를 사용하여 공개 정적입니다.
public static function usortCalledFrom()
public static function myFunction()
이처럼 usortCalledFrom ()을 호출했습니다.
usort($array,"static::myFunction")
이 중 아무것도 일하지 않았다
usort($array,"MyClass::myFunction")
usort($array, array("MyClass","myFunction")
참고 URL : https://stackoverflow.com/questions/6053994/using-usort-in-php-with-a-class-private-function
반응형
'program tip' 카테고리의 다른 글
toFixed ()와 toPrecision ()의 차이점은 무엇입니까? (0) | 2020.07.27 |
---|---|
태그를 올바르게 닫는 방법 ? (0) | 2020.07.27 |
Django DoesNotExist 예외를 가져 오려면 어떻게합니까? (0) | 2020.07.26 |
JavaScript 코드를 어떻게 디버깅 할 수 있습니까? (0) | 2020.07.26 |
워크 스테이션에서 개발중인 iOS 애플리케이션으로 장치에서 작성된 파일을 찾아보십시오. (0) | 2020.07.26 |