현재 위치: > 최신 기사 목록> 배열 매핑 (array_map)과 함께 Max () 함수를 사용하여 효율성을 향상시키는 방법?

배열 매핑 (array_map)과 함께 Max () 함수를 사용하여 효율성을 향상시키는 방법?

gitbox 2025-09-05

효율성을 향상시키는 아이디어

최적화의 핵심은 다음과 같습니다. 최대 값을 얻으려면 완전한 매핑 결과가 필요하지 않으면 루프에 로직을 작성하여 다음을 완료 할 수 있습니다.

 <span><span><span class="hljs-variable">$prices</span></span><span> = [</span><span><span class="hljs-number">1999</span></span><span>, </span><span><span class="hljs-number">2500</span></span><span>, </span><span><span class="hljs-number">3200</span></span><span>, </span><span><span class="hljs-number">1800</span></span><span>];

</span><span><span class="hljs-variable">$maxPrice</span></span><span> = </span><span><span class="hljs-literal">null</span></span><span>;
</span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$prices</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$p</span></span><span>) {
    </span><span><span class="hljs-variable">$converted</span></span><span> = </span><span><span class="hljs-variable">$p</span></span><span> / </span><span><span class="hljs-number">100</span></span><span>;
    </span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$maxPrice</span></span><span> === </span><span><span class="hljs-literal">null</span></span><span> || </span><span><span class="hljs-variable">$converted</span></span><span> &gt; </span><span><span class="hljs-variable">$maxPrice</span></span><span>) {
        </span><span><span class="hljs-variable">$maxPrice</span></span><span> = </span><span><span class="hljs-variable">$converted</span></span><span>;
    }
}

</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$maxPrice</span></span><span>; </span><span><span class="hljs-comment">// 산출 32</span></span><span>
</span></span>

이를 수행하면 Array_map 의 프로세스가 새로운 배열을 생성하고 메모리를 저장하며 빅 데이터 시나리오에서 더 잘 수행합니다.


익명 기능과 생성기 결합

코드가 기능 스타일을 유지하고 메모리 소비를 줄이려는 경우 생성기를 고려할 수 있습니다.

 <span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">convertPrices</span></span><span>(</span><span><span class="hljs-params"><span class="hljs-variable">$prices</span></span></span><span>) {
    </span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$prices</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$p</span></span><span>) {
        </span><span><span class="hljs-keyword">yield</span></span><span> </span><span><span class="hljs-variable">$p</span></span><span> / </span><span><span class="hljs-number">100</span></span><span>;
    }
}

</span><span><span class="hljs-variable">$prices</span></span><span> = [</span><span><span class="hljs-number">1999</span></span><span>, </span><span><span class="hljs-number">2500</span></span><span>, </span><span><span class="hljs-number">3200</span></span><span>, </span><span><span class="hljs-number">1800</span></span><span>];

</span><span><span class="hljs-variable">$maxPrice</span></span><span> = </span><span><span class="hljs-title function_ invoke__">max</span></span><span>(</span><span><span class="hljs-title function_ invoke__">iterator_to_array</span></span><span>(</span><span><span class="hljs-title function_ invoke__">convertPrices</span></span><span>(</span><span><span class="hljs-variable">$prices</span></span><span>)));

</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$maxPrice</span></span><span>; </span><span><span class="hljs-comment">// 산출 32</span></span><span>
</span></span>

여기에서 iterator_to_array 가 사용되지만보다 복잡한 스트리밍 시나리오에서 생성기는 한 번에 메모리에 대규모 데이터로드를 피할 수 있으며 이는 확장 성이 향상됩니다.