-
mapWithKeys() {#collection-method}Laravel/라라벨정보 2020. 4. 6. 15:44728x90
정의 : mapWithKeys 메소드는 컬렉션 전체를 반복하며 각각의 값을 주어진 콜백에 전달합니다 콜백은 하나의 키/값 쌍을 포함하는 연관 배열을 반환합니다.
먼소린지 일딴 이해가 안되는데 밑에 예제 연관 배열을 보자.
$collection =
collect([
[ 'name' => 'John', 'department' => 'Sales', 'email' => 'john@example.com' ],
[ 'name' => 'Jane', 'department' => 'Marketing', 'email' => 'jane@example.com' ]
]);
첫번째 연관배열은 존 녀석의 이름과 직업 이메일
두번째 연관배열은 제인 이름 직업 이메일이다
자 그럼 mapWithKeys 메소드의 설명을 다시보자 역시, 다시 봐도 모르겠다.
그럼 밑에 결과 예제를 한번 볼까?
$keyed = $collection->mapWithKeys(function ($item)
{ return [$item['email'] => $item['name']]; });
//$keyed->all();
난 all함수말고 그냥 페이지에서 보게
dump($keyed);로 해본다.
/* [ 'john@example.com' => 'John', 'jane@example.com' => 'Jane', ] */
오호 보니까 $collection이라는 배열에 mapWithKeys라는 메소드를 통해서
다시 email이 name을 가르키는 연관배열로 다시 만들어서 반환(return)하는것 같다.
한번 출력해볼까?
리얼 겁나 섹시하네 라라벨!! 헬퍼함수!!!
자 어렴풋이 조금 이해가 됬으니 이제 저것을 가지고 내가 사용하는곳에 접목 시켜보자
1.
$genresArray = Http::withToken(config('services.tmdb.token'))
->get('https://api.themoviedb.org/3/genre/movie/list')
->json()['genres'];먼저, api에서 얻어온 데이터의 연관 배열을 살펴보자
id값과 name 을 가진 배열이 주루루룩 나온다.
여기서 내가 얻고 싶은 데이터는 나는
$popularMovies = Http::withToken(config('services.tmdb.token'))
->get('https://api.themoviedb.org/3/movie/popular')
->json()['results'];이곳에서 id값을 얻었으니 그 id값으로 name을 얻고 싶다.
그렇다면 위에 예제처럼 저기에 있는 id값이 바로 name을 가르키는 연관배열로 반환 시키면 되겠지?
바꿔보자
$test = $genresArray->mapWithKeys(function($item){
return [$item['id'] => $item['name']];
});Call to a member function mapWithKeys() on array
이런 오류 발생... 저 멤버함수를 사용할 수 없다네 왤까...? 뭘 잘못한거지
해결)
위에 예제를 보면 $collection변수에 담겨있는 연관배열이
collect([]) 이렇게 콜렉트 함수에 감싸져 있다!!! 그렇다면 내것도
$test = collect($genresArray)->mapWithKeys(function($item){
return [$item['id'] => $item['name']];
});
dump($test);결과는?
성공! 너무 재밋습니다.
예제출처)
728x90'Laravel > 라라벨정보' 카테고리의 다른 글
라라벨에서 멀티 인증 하는법 (0) 2020.04.08 블레이드 템플릿 - Components (0) 2020.04.06 cURL error 60: SSL certificate problem: unable to get local issuer certificate (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) (0) 2020.04.03 tailwind.config.js 위치 (0) 2020.04.03 라라벨 프로젝트에서 이미지 경로 사용 (0) 2020.04.03