PHP에서 배열은 가장 일반적으로 사용되는 데이터 구조 중 하나입니다. 배열을 처리 할 때는 종종 내장 기능을 사용하여 Array_Map () 및 Reset () 와 같은 작업을 단순화합니다. 이 두 기능은 관련이없는 것처럼 보이지만 실제로는 효율적이고 간결한 논리적 처리를 달성하기 위해 실용적인 시나리오에서 조합하여 사용될 수 있습니다. 이 기사는 실제 사례를 사용하여 PHP 배열 처리 기술을 더 잘 마스터하는 데 도움이되는 방법을 깊이 분석합니다.
Reset () 는 첫 번째 요소에 대한 내부 포인터를 가리키고 해당 요소의 값을 반환하는 함수입니다.
<span><span><span class="hljs-variable">$arr</span></span><span> = [</span><span><span class="hljs-number">10</span></span><span>, </span><span><span class="hljs-number">20</span></span><span>, </span><span><span class="hljs-number">30</span></span><span>];
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">reset</span></span><span>(</span><span><span class="hljs-variable">$arr</span></span><span>); </span><span><span class="hljs-comment">// 산출 10</span></span><span>
</span></span>
Array_Map ()은 배열의 각 요소에 콜백 함수를 적용하여 처리 된 새 배열을 반환합니다.
<span><span><span class="hljs-variable">$arr</span></span><span> = [</span><span><span class="hljs-number">1</span></span><span>, </span><span><span class="hljs-number">2</span></span><span>, </span><span><span class="hljs-number">3</span></span><span>];
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_map</span></span><span>(function(</span><span><span class="hljs-variable">$v</span></span><span>) {
</span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-variable">$v</span></span><span> * </span><span><span class="hljs-number">2</span></span><span>;
}, </span><span><span class="hljs-variable">$arr</span></span><span>);
</span><span><span class="hljs-comment">// $result = [2, 4, 6]</span></span><span>
</span></span>
데이터베이스에서 추출한 필드 모음을 나타내는 2 차원 배열이있는 시나리오를 상상해보십시오. 각 데이터 세트의 첫 번째 값에만 관심이 있습니다.
<span><span><span class="hljs-variable">$data</span></span><span> = [
[</span><span><span class="hljs-string">'apple'</span></span><span>, </span><span><span class="hljs-string">'red'</span></span><span>],
[</span><span><span class="hljs-string">'banana'</span></span><span>, </span><span><span class="hljs-string">'yellow'</span></span><span>],
[</span><span><span class="hljs-string">'grape'</span></span><span>, </span><span><span class="hljs-string">'purple'</span></span><span>],
];
</span></span>
목표는 각 서브 어레이에서 첫 번째 요소, 즉 [ 'Apple', 'Banana', 'Grape']를 추출하는 것입니다.
일반적으로 우리는 foreach를 사용하여 처리합니다.
<span><span><span class="hljs-variable">$result</span></span><span> = [];
</span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$data</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$item</span></span><span>) {
</span><span><span class="hljs-variable">$result</span></span><span>[] = </span><span><span class="hljs-title function_ invoke__">reset</span></span><span>(</span><span><span class="hljs-variable">$item</span></span><span>);
}
</span></span>
가능하지만 코드는 약간 장점입니다. Array_Map () 및 Reset ()를 사용하여 최적화 할 수 있습니다.
<span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_map</span></span><span>(</span><span><span class="hljs-string">'reset'</span></span><span>, </span><span><span class="hljs-variable">$data</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$result</span></span><span>);
</span></span>
출력 결과 :
<span><span>Array
(
[</span><span><span class="hljs-meta">0</span></span><span>] => apple
[</span><span><span class="hljs-meta">1</span></span><span>] => banana
[</span><span><span class="hljs-meta">2</span></span><span>] => grape
)
</span></span>
간결하지 않습니까? 여기서 array_map ()는 $ 데이터 의 각 서브 어레이에서 rest ()을 호출하여 각 서브 어레이의 첫 번째 요소를 반환합니다.
Reset ()는 실제로 배열의 내부 포인터를 수정하지만 Array_Map () 에서 사용하면 각 서브 어레이가 값으로 전달되므로 원래 배열에 영향을 미치지 않습니다. 이것이이 사용법이 안전한 이유입니다.
서브 어레이가 비어 있으면 Reset ()가 false를 반환합니다. 따라서 필터링 프로세스를 추가 할 수 있습니다.
<span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_filter</span></span><span>(</span><span><span class="hljs-title function_ invoke__">array_map</span></span><span>(</span><span><span class="hljs-string">'reset'</span></span><span>, </span><span><span class="hljs-variable">$data</span></span><span>), function(</span><span><span class="hljs-variable">$val</span></span><span>) {
</span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-variable">$val</span></span><span> !== </span><span><span class="hljs-literal">false</span></span><span>;
});
</span></span>
두 번째 요소를 얻는 것과 같은보다 복잡한 추출 로직이 필요한 경우 익명 함수를 결합 할 수 있습니다.
<span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_map</span></span><span>(function(</span><span><span class="hljs-variable">$item</span></span><span>) {
</span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-variable">$item</span></span><span>[</span><span><span class="hljs-number">1</span></span><span>] ?? </span><span><span class="hljs-literal">null</span></span><span>;
}, </span><span><span class="hljs-variable">$data</span></span><span>);
</span></span>
이 경우 Reset () 및 Array_map () 의 영리한 조합은 코드를보다 간결하고 우아하게 만들뿐만 아니라 가독성과 유지 보수를 향상시킬 수 있음을 알 수 있습니다. 이 조합 방법은 2 차원 어레이의 특정 위치에서 데이터 추출을 처리하는 데 매우 적합하며 모든 PHP 개발자가 마스터 해야하는 팁입니다.
이러한 기본적이고 강력한 기능 조합을 마스터하면 배열 처리에서 효율성과 코드 품질이 크게 향상됩니다.
관련 태그:
array_map