728x90
array_walk()는 주어진 배열의 모든 요소에 대해 사용자가 정의한 콜백 함수를 실행하는 함수입니다.

콜백 함수의 첫 번째 파라미터 $value 앞에 &를 붙여 참조로 받았기 때문에, 함수 내에서 $value를 변경한 것이 원본 배열 $fruits에 직접 반영되었습니다.
array_walk()는 한계가 있습니다.
바로 1차원 배열에서만 동작한다는 점입니다.
만약 배열 안에 또 다른 배열(중첩 배열)이 있다면, 그 안까지는 들어가지 못합니다.

username의 공백은 제거되었지만, details 배열 안의 email에 있는 공백은 그대로 남아있습니다. array_walk()는 details가 배열이라는 것만 알고 그 안까지는 탐색하지 않기 때문입니다.
array_walk_recursive()는 배열을 재귀적으로 순회하면서 배열이 아닌 값(leaf node)을 만날 때마다 콜백 함수를 실행합니다

array_map과의 차이는?
array_walk(): 원본 배열을 직접 수정. 반환값은 bool. 키($key)를 사용할 수 있음.
array_map(): 새로운 배열을 생성하여 반환. 원본은 그대로. 키($key)를 사용할 수 없음.
단순한 1차원 배열의 값을 원본에서 직접 변경하고 싶다면 array_walk()를
$_POST나 API 응답처럼 구조가 복잡한 다차원 배열의 모든 최종 값에 대해 일괄적인 처리가 필요하다면
array_walk_recursive()의 사용을 고려해볼수있습니다.
'PHP' 카테고리의 다른 글
| [PHP] ... (스프레드 연산자) 배열 병합 및 함수 인자 전달 (0) | 2025.10.05 |
|---|---|
| [PHP] 객체의 불변성을 보장하는 readonly 프로퍼티 (0) | 2025.10.03 |
| [PHP] FilterIterator 로 if 없는 foreach loop 만들기 (0) | 2025.09.26 |
| [PHP] __clone() 메소드: 객체 복사 시 발생하는 문제와 해결법 (0) | 2025.09.19 |
| [PHP] 상속(extends)을 사용하기 (0) | 2025.09.15 |