PHP에서 array_map, array_walk, array_filter 구별
array_map, array_walk, array_filter는 모두 콜백 함수를 취하는 PHP 함수이지만 배열에서 작업을 수행하는 인수의 경우 동작과 사용법에 미묘한 차이가 있습니다.
주요 차이점:
1. 값 수정:
array_map은 입력 배열 내의 값을 수정할 수 없지만 array_walk는 수정할 수 있습니다. array_map은 콜백 함수의 결과로 새로운 배열을 생성하고, array_walk는 입력 배열을 그 자리에서 수정하기 때문입니다.
2. 배열 키 액세스:
array_map은 배열 키에 대해 작동할 수 없지만 array_walk는 작동할 수 있습니다. 이는 array_walk가 배열의 값과 키를 모두 기반으로 작업을 수행할 수 있음을 의미합니다.
3. 반환 값:
array_map은 콜백 함수의 결과가 포함된 새 배열을 반환하고, array_walk는 콜백 함수가 입력 배열의 모든 요소에 성공적으로 적용된 경우 true를 반환합니다.
4. 다중 배열 반복:
array_map은 여러 배열을 입력으로 받아들이고 병렬로 반복할 수 있으므로 한 번에 여러 배열에서 작업을 수행할 수 있습니다. 반면 array_walk는 하나의 어레이에서만 작동합니다.
5. 콜백 인수 전달:
array_walk를 사용하면 추가 임의 매개변수를 콜백 함수에 전달할 수 있어 콜백 내에서 수행되는 작업에 유연성을 제공합니다.
6. 반환된 배열 길이:
array_map은 가장 큰 입력 배열과 길이가 동일한 결과 배열을 생성합니다. array_walk는 배열을 반환하지 않으며 입력 배열의 요소 수를 변경할 수 없습니다. array_filter는 필터링 기능을 기반으로 원래 배열의 하위 집합을 반환하고 원래 키를 보존합니다.
예:
다음 코드를 고려하세요.
<code class="php">$a1 = array(2.4, 2.6, 3.5); $a2 = array(2.4, 2.6, 3.5); array_map('floor', $a1); // $a1 remains unchanged array_walk($a2, function (&$v) { $v = floor($v); }); // modifies $a2</code>
첫 번째 경우 array_map은 $a1에 있는 각 요소의 최소값을 사용하여 새 배열을 생성하지만 $a1 자체는 수정되지 않은 상태로 유지됩니다. 두 번째 경우 array_walk는 $a2의 요소를 가장 가까운 정수로 내림하여 직접 수정합니다.
위 내용은 array_map, array_walk 및 array_filter는 PHP에서 동작과 사용법이 어떻게 다릅니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!