0
function f($idx, $arr) {
static $a;
if ($a == NULL) {
foreach ($arr as $v) {
$key = $v['key'];
if (!isset($a[$key])) {
$a[$key] = array();
}
$a[$key][] = $v;
}
}
return $a[$idx];
}
그리고 초기 조건은 다음과 같습니다
- 기능
f()
1 개 요청 $arr
에 많은 여러 번 호출되어 항상 매우 큰$arr
은 다른 함수 호출에서 다를 수 있습니다 (하위 카디널리티)$idx
거의 모든 함수 호출 (높은 기수)
그리고 지금은 알 필요가 다릅니다, $arr
는 이미 캐시되는 경우,이 "캐시 된 버전"을 만들뿐만 아니라 이전의 모든 배열을 유지하지 않을 경우.
2.
에 따르면 md5(serialize($arr))
을 식별자로 사용할 수 없으므로이를 확인하기 위해 다른 방법이 필요합니다. 그러한 hight-performance 캐싱 기능을 어떻게 달성 할 수 있는지 알고 싶습니다 (이 함수 밖에서 어떤 변경도 할 수 없다고 가정 해 봅시다)?
, 대신에 [$ IDX]', 당신은 $있어'의 '$ a [$ array_identifier] [$ idx]'를 찾으십니까? – Jason
네, 맞아요 :) –