여기 계시다면 array_map 함수가 콜백의 배열 키에 대한 액세스를 허용하지 않는다는 것을 이미 알고 계실 것입니다. 값 이외의 키를 갖는 것은 연관 배열(문자열 키가 있는 배열)을 처리하는 데 매우 유용할 수 있습니다.
이 솔루션의 사용 사례와 제가 구현한 새로운 기능을 보여드리겠습니다.
더 많은 기술 관련 기사를 보려면 Linkedin이나 X에서 저를 팔로우하세요.
PHP array_map 함수의 일반적인 실제 사용 사례는 데이터베이스 쿼리 또는 API 응답의 데이터를 변환하는 것입니다. 예를 들어 사용자 데이터 배열이 있고 사용자 이름의 형식을 지정하거나 각 사용자 레코드에서 특정 정보를 추출하려고 한다고 가정해 보겠습니다.
사용자 레코드 배열이 있고 각 레코드가 first_name, last_name 및 email과 같은 키가 포함된 연관 배열이라고 가정해 보세요.
// Array of user data (e.g., from a database query) $users = [ [ 'first_name' => 'John', 'last_name' => 'Doe', 'email' => 'john.doe@example.com' ], [ 'first_name' => 'Jane', 'last_name' => 'Smith', 'email' => 'jane.smith@example.com' ], [ 'first_name' => 'Bob', 'last_name' => 'Johnson', 'email' => 'bob.johnson@example.com' ] ];
알림을 보낼 이메일 주소 목록을 쉽게 추출할 수 있습니다.
$emails = array_map(function($user) { return $user['email']; }, $users); // Result: ['john.doe@example.com', 'jane.smith@example.com', 'bob.johnson@example.com']
array_map 함수를 사용하여 해당 정보를 기반으로 사용자 개체에 새 필드를 추가할 수 있습니다.
// Using array_map to add the avatar field to each user $result = array_map(function($user) { return array_merge( $user, [ 'avatar' => 'https://eu.ui-avatars.com/api/?background=ff7511&color=fff&name='.$user['first_name'] ] ); }, $users); // Output the result var_dump($result);
NoSQL 데이터베이스에서 데이터를 추출하여 제품 대시보드에 차트를 만들었습니다. NoSQL 데이터베이스로부터 받은 데이터는 다음과 같습니다.
$data = [ "2024-08-25" => ["doc_count" => 523, "score" => 0.2, "skipped" => 0], "2024-08-24" => ["doc_count" => 423, "score" => 0.2, "skipped" => 0], "2024-08-23" => ["doc_count" => 453, "score" => 0.2, "skipped" => 0], "2024-08-22" => ["doc_count" => 267, "score" => 0.2, "skipped" => 0], "2024-08-21" => ["doc_count" => 378, "score" => 0.2, "skipped" => 0], "2024-08-20" => ["doc_count" => 325, "score" => 0.2, "skipped" => 0], "2024-08-19" => ["doc_count" => 501, "score" => 0.2, "skipped" => 0], ];
차트를 시각화하는 데 사용되는 자바스크립트 라이브러리 때문에 프런트엔드 개발자의 작업을 더 쉽게 만들려면 이 데이터를 아래 형식으로 변환해야 합니다.
$result = [ [ "label" => "2024-08-25", "value" => 523 ], [ "label" => "2024-08-24", "value" => 423 ], ... ];
그러나 이 변환을 수행하려면 원래 배열의 키에 액세스하여 "레이블" 필드에 입력해야 합니다. 하지만 기본 array_map 함수는 값에 대한 접근만 허용합니다.
다음은 연관 배열과 함께 작동하는 array_map_assoc 함수의 구현입니다. 콜백의 인수로 키와 값을 모두 제공합니다.
/** * Apply a mapping callback receiving key and value as arguments. * The standard array_map doesn't pass the key to the callback. But in the case of associative arrays, * it could be really helpful. * * array_map_assoc(function ($key, $value) { * ... * }, $items) * * @param callable $callback * @param array $array * @return array */ function array_map_assoc(callable $callback, array $array): array { return array_map(function($key) use ($callback, $array){ return $callback($key, $array[$key]); }, array_keys($array)); }
이제 원래 사용자 배열을 자바스크립트 차트 라이브러리의 데이터 형식으로 변환할 수 있습니다.
$histogram = array_map_assoc(function ($key, $value) { return [ 'label' => $key, 'value' => $value['doc_count'] ]; }, $data);
array_map_assoc 함수는 문자열 키의 상태를 보존하지 않지만 완전히 새로운 표준 배열을 생성하므로 주의하세요.
또한 이 함수를 Laravel 애플리케이션의 전역 네임스페이스에 새로운 도우미 함수로 추가했습니다.
https://inspector.dev/laravel-custom-helper-functions-fast-tips/
경험이 많은 개발자는 foreach 문을 사용하여 간단히 키와 값에 액세스할 수 있다고 생각할 수도 있습니다.
foreach ($data as $date => $value) { ... }
foreach를 사용하면 결과 변환을 저장하기 위해 추가 변수를 사용해야 하며 "한 줄" 문으로 코드를 구성할 수 없습니다.
// Array of user data (e.g., from a database query) $users = [ [ 'first_name' => 'John', 'last_name' => 'Doe', 'email' => 'john.doe@example.com' ], [ 'first_name' => 'Jane', 'last_name' => 'Smith', 'email' => 'jane.smith@example.com' ], [ 'first_name' => 'Bob', 'last_name' => 'Johnson', 'email' => 'bob.johnson@example.com' ] ];
더 많은 기술 관련 기사를 보려면 Linkedin이나 X에서 저를 팔로우하세요.
Inspector는 소프트웨어 개발자를 위해 특별히 설계된 코드 실행 모니터링 도구입니다. 서버 수준에서 아무것도 설치할 필요가 없습니다. Laravel 또는 Symfony 패키지만 설치하면 바로 사용할 수 있습니다.
HTTP 모니터링, 데이터베이스 쿼리 통찰력, 경고 및 알림을 선호하는 메시징 환경으로 전달하는 기능을 찾고 있다면 Inspector를 무료로 사용해 보세요. 계정을 등록하세요.
또는 웹사이트에서 자세한 내용을 알아보세요: https://inspector.dev
위 내용은 연관 배열을 위한 PHP array_map – 빠른 팁의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!