맞춤 정렬 기능을 쓰고 있습니다. 현재 (작동하지 않는) 코드는 다음과 같습니다.PHP가 포함 된 중첩 함수
<?php
function sort_by_key($array, $key) {
function custom_compare ($a, $b) {
if ($a[$key][0] > $b[$key][0]) { return 1; }
else { return -1; }
}
return usort($array, "custom_compare");
}
?>
문제는 $ key 변수를 custom_compare 함수에 전달할 수 없다는 것입니다. 전역 변수 (못생긴 코딩) 사용을 피하고 싶습니다.
<?php
function sort_by_key($array, $key) {
$custom_compare = function ($a, $b) use ($key) {
if ($a[$key][0] > $b[$key][0]) { return 1; }
else { return -1; }
};
return usort($array, $custom_compare);
}
기존 기능의 작은 수정을 바탕으로 :
나는 PHP가 중첩 된 기능을 지원하지 않는 것으로 나타났습니다 추가 읽기와
은 또한 당신의 기능은 여전히 작은 변화를 필요로한다. 내 코드는 두 번째 실행시 오류를 반환하고 PHP는 custom_compare -function을 다시 선언하려고 시도합니다. 전역 변수 이외에 다른 옵션이 있습니까? usort가 사용하기 때문에 custom_compare에 더 많은 인수를 전달할 수 없습니다. – ex4