Foreach 루프에서 콜백 함수를 사용할 때 결과 축적 문제가 발생하는 이유는 무엇입니까? 그것을 해결하는 방법?
foreach
루프에서 콜백 기능의 누적 문제와 솔루션
이 기사에서는 foreach
루프에서 콜백 기능을 사용할 때 발생할 수있는 누적 결과 문제에 대해 설명하고 해당 솔루션을 제공합니다.
문제 설명
foreach
루프를 사용하여 데이터를 반복하고 콜백 함수 getchildareaid
호출하여 하위 지역 ID를 얻을 때 결과가 축적 된 것으로 나타났습니다. 코드는 다음과 같습니다.
foreach ($ towns as $ key => $ val) { $ atreaIdarr = getChildAreaid ($ val [ 'id']); $ result [$ val [ 'name']] = $ worker :: 여기서 ( 'Area_id', 'in', $ atreaDar)-> count (); }
콜백 함수 getchildareaid
다음과 같이 정의됩니다.
함수 getchildaiid ($ id) { 정적 $ 영역; $ area = $ area ?? New \ App \ Common \ Model \ Area; $ result = collection ($ area-> where ([ 'pid'=> $ id])-> order ( 'id desc')-> select ())-> toArray (); 정적 $ res = []; if ($ result) { foreach ($ result as $ key => $ val) { $ res [] = $ val [ 'id']; getChildAreaiid ($ val [ 'id']); } } Return $ res; }
문제는 getchildareaid
함수가 정적 변수 $res
사용한다는 것입니다. 이는 이전 결과가 매번 독립적으로 계산하기보다는 호출 될 때마다 이전 결과가 축적됩니다.
문제 분석
static $res = [];
getchildareaid
함수에서 정적 변수를 선언합니다. 함수 호출이 완료된 후에 정적 변수는 파괴되지 않으며 그 값은 후속 통화로 유지됩니다. 따라서 foreach
루프가 getchildareaid
호출 할 때마다 $res
새로운 결과를 축적하여 결국 결과에 오류가 발생합니다.
해결책
이 문제를 해결하고 정적 변수를 사용하지 않으려면 다음 두 가지 방법을 사용할 수 있습니다.
함수를 다시 작성하고 로컬 변수 사용 : 정적 변수
$res
사용하는 대신 새 기능을 만듭니다. 그러나 로컬 변수를 사용하여 각 통화 결과를 저장하십시오.기존 함수를 수정하고 정적 변수를 제거하십시오.
getchildareaid
함수를 수정하고 정적 변수$res
제거하고 재귀 적으로 호출 될 때 새 배열을 반환하여 결과 축적을 피하십시오. 수정 된 기능은 다음과 같습니다.
함수 getChildAreaid ($ id) { $ area = new \ App \ Common \ Model \ Area; $ result = collection ($ area-> where ([ 'pid'=> $ id])-> order ( 'id desc')-> select ())-> toArray (); $ res = []; if ($ result) { foreach ($ result as $ key => $ val) { $ res [] = $ val [ 'id']; $ res = array_merge ($ res, getChildAreaid ($ val [ 'id'])); } } Return $ res; }
이 수정 된 함수는 재귀 적으로 호출 될 때마다 새로운 $res
배열을 생성하고 재귀 결과를 현재 $res
로 병합하여 결과 축적 문제를 피합니다. 선택할 솔루션은 코드의 전체 구조 및 유지 관리 가능성에 따라 다릅니다. 일반적으로 재 작성 기능은 명확하고 이해하기 쉽습니다.
위의 방법을 통해 foreach
루프에서 콜백 함수 결과 축적 문제를 효과적으로 해결할 수있어 콜백 함수가 호출 될 때마다 올바른 결과를 얻을 수 있습니다.
위 내용은 Foreach 루프에서 콜백 함수를 사용할 때 결과 축적 문제가 발생하는 이유는 무엇입니까? 그것을 해결하는 방법?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

교환의 내장 양자화 도구에는 다음이 포함됩니다. 1. Binance : Binance 선물 정량 모듈, 낮은 취급 수수료 및 AI 지원 거래를 지원합니다. 2. OKX (OUYI) : 다중 계정 관리 및 지능형 주문 라우팅을 지원하고 기관 수준의 위험 관리를 제공합니다. 독립적 인 정량적 전략 플랫폼에는 다음이 포함됩니다. 4. Quadency : 맞춤형 위험 임계 값을 지원하는 전문 수준 알고리즘 전략 라이브러리. 5. Pionex : 내장 16 사전 설정 전략, 낮은 거래 수수료. 수직 도메인 도구에는 다음이 포함됩니다. 6. Cryptohopper : 클라우드 기반 정량 플랫폼, 150 개의 기술 지표를 지원합니다. 7. BITSGAP :

Uniswap 사용자는 유동성 풀에서 지갑으로 토큰을 인출하여 자산 보안 및 유동성을 보장 할 수 있습니다. 이 프로세스에는 가스 수수료가 필요하며 네트워크 혼잡의 영향을받습니다.

이 획기적인 개발을 통해 금융 기관은 전 세계적으로 인정 된 ISO20022 표준을 활용하여 다양한 블록 체인 생태계에서 은행 프로세스를 자동화 할 수 있습니다. Ease Protocol은 사용하기 쉬운 방법을 통해 광범위한 채택을 촉진하도록 설계된 엔터프라이즈 수준의 블록 체인 플랫폼입니다. 오늘 ISO20022 메시징 표준을 성공적으로 통합하여 블록 체인 스마트 계약에 직접 통합했다고 발표했습니다. 이 개발을 통해 금융 기관은 신속한 메시징 시스템을 대체하는 전 세계적으로 인정 된 ISO20022 표준을 사용하여 다양한 블록 체인 생태계에서 뱅킹 프로세스를 쉽게 자동화 할 수 있습니다. 이러한 기능은 곧 "EaseTestnet"에서 시도됩니다. EaseProtocolarchitectDou

디지털 통화 앱의 전망은 광범위하며, 이는 특히 반영됩니다. 1. 기술 혁신 중심 기능 업그레이드, Defi 및 NFT 및 AI 및 빅 데이터 애플리케이션의 통합을 통해 사용자 경험을 향상시킵니다. 2. AML 및 KYC에 대한 규제 준수 동향, 글로벌 프레임 워크 개선 및 엄격한 요구 사항; 3. 기능 다각화 및 서비스 확장, 대출, 재무 관리 및 기타 서비스 통합 및 사용자 경험 최적화; 4. 사용자 기반 및 글로벌 확장 및 사용자 규모는 2025 년에 10 억을 초과 할 것으로 예상됩니다.

통화 서클에서 소위 Big Three는 일반적으로 가장 영향력 있고 널리 사용되는 세 가지 암호 화폐를 나타냅니다. 이러한 cryptocurrencies는 시장에서 중요한 역할을하며 거래량 및 시가 총액 측면에서 잘 수행되었습니다. 동시에 주류 가상 환전 앱은 투자자와 거래자가 암호 화폐 거래를 수행하는 데 중요한 도구이기도합니다. 이 기사는 통화 서클의 3 개의 거인과 권장되는 상위 10 개 주류 가상 환전 앱을 자세히 소개합니다.

최신 시도에서 해결 된 Crypto Exchange FTX는 부채를 회수하고 고객을 상환하기 위해 법적 조치를 취했습니다. 최신 부채를 회수하고 고객을 상환하기위한 노력에서, 해결 된 암호화 Exchange FTX는 특정 발행자에 대한 법적 조치를 취했습니다. FTX Trading 및 FTX Recovery Trust는 합의 된 동전을 거래소에 송금하기로 합의하지 않은 특정 토큰 발행자에 대한 소송을 제기했습니다. 구체적으로, 구조 조정 팀은 월요일에 NFTSTARS LIMITED와 OROSEMI Inc.를 준수 문제로 고소했습니다. FTX는 만료 된 동전을 복구하기 위해 토큰 발행자를 고소하고 있습니다. FTX는 한때 미국에서 가장 뛰어난 암호 화폐 거래 플랫폼 중 하나였습니다. 은행은 2022 년 11 월 창립자 Sam을

cryptocurrency 거래 분야에서 거래소의 보안은 항상 사용자의 초점이었습니다. 2025 년, 수년간의 개발 및 진화 후 일부 교환은 뛰어난 보안 조치 및 사용자 경험으로 두드러집니다. 이 기사는 2025 년에 가장 안전한 5 개의 교환을 소개하고 Black U (해커 공격 사용자)를 피하기 위해 자금이 100% 보안을 피하는 방법에 대한 실질적인 안내서를 제공 할 것입니다.

2025 : 1. Binance : 세계를 주도하여 효율적인 거래 및 다양한 금융 상품을 제공하는 상위 10 개 디지털 가상 통화 거래 앱 순위. 2. OKX : 다양한 거래 유형을 지원하는 혁신적이고 다양합니다. 3. Huobi : 고품질 서비스를 제공하는 안정적이고 신뢰할 수 있습니다. 4. Coinbase : 초보자와 간단한 인터페이스에 친절하십시오. 5. 크라켄 : 강력한 도구를 가진 전문 거래자를위한 첫 번째 선택. 6. Bitfinex : 효율적인 거래, 풍부한 거래 쌍. 7. 비트 트렉 : 안전 준수, 규제 협력.
