반응형
익명 함수를 매개 변수로 사용하여 외부 변수에 액세스
기본적으로 편리한 기능을 사용하여 db 행을 처리합니다 (PDO 및 / 또는 기타 항목에 눈을 감으십시오).
function fetch($query,$func) {
$query = mysql_query($query);
while($r = mysql_fetch_assoc($query)) {
$func($r);
}
}
이 기능을 사용하면 다음을 수행 할 수 있습니다.
fetch("SELECT title FROM tbl", function($r){
//> $r['title'] contains the title
});
이제 모든 $r['title']
변수 를 연결해야 가정 해 봅시다 (이것은 단지 예입니다).
어떻게 할 수 있습니까? 나는 이와 같은 것을 생각하고 있었지만 그다지 우아하게 만들었습니다.
$result = '';
fetch("SELECT title FROM tbl", function($r){
global $result;
$result .= $r['title'];
});
echo $result;
당신은 사용이 use
같은 문서에 설명 :
클로저는 부모 범위에서 변수를 상속 할 수도 있습니다. 선언 변수는 헤더에서 선언해야합니다. 상위 범위에서 변수를 상속하는 전역 변수를 사용하는 것과 동일하지 않습니다. 전역 변수는 전역 범위에 존재하며 어떤 함수가 실행 되든 동일합니다.
암호 :
$result = '';
fetch("SELECT title FROM tbl", function($r) use (&$result) {
$result .= $r['title'];
});
그러나주의하십시오 (이전 링크의 주석 중 하나에서 가져옴).
() 매개 변수는 초기 바인딩입니다. 람다 함수가 호출되는 지점 (후기 바인딩)이 아닌 람다 함수가 선언 된 지점에서 변수 값을 사용합니다.
$ func를 한 번만 호출하도록 'fetch'를 다시 작성하는 것은 어떻습니까?
function fetch($query,$func) {
$query = mysql_query($query);
$retVal = array();
while($r = mysql_fetch_assoc($query)) {
$retVal[] = $r;
}
$func($retVal);
}
이렇게하면 $ func를 한 번만 호출하고 일련 배열을 다시 처리 할 수 있습니까? 함수를 200 번 호출해도 성능이 확실하지 않은 것은 좋은 생각처럼 들리지 않습니다.
반응형
'IT' 카테고리의 다른 글
.NET Core에서 운영 확인 (0) | 2020.09.07 |
---|---|
스칼라 튜플 풀기 (0) | 2020.09.07 |
src와 data-src 속성의 차이점은 무엇입니까? (0) | 2020.09.07 |
ReadableStream 객체에서 데이터를 검색 하시겠습니까? (0) | 2020.09.07 |
Servlet 2.5와 3의 차이점은 무엇입니까? (0) | 2020.09.07 |