Laravel의 일일 개발 과정에서 우리는 종종 배열의 "유효하지 않은"데이터를 청소 해야하는 시나리오를 겪습니다. 예를 들어, 양식에 채워지지 않은 필드, API 매개 변수에 빈 값 또는 특정 논리에 따라 필터링해야합니다. PHP에서 Array_Filter ()는 이러한 문제를 처리하는 강력한 도구입니다.
Array_Filter () 는 기본 PHP 기능이지만 Laravel 프로젝트에는 매우 광범위한 응용 프로그램 시나리오도 있습니다. 다음으로, 우리는 Laravel 프로젝트에서 우아하게 사용하기 위해 몇 가지 실제 예를 통해 단계별로 당신을 데려갑니다.
가장 일반적인 시나리오 중 하나는 사용자가 양식을 제출할 때이지만 일부 필드는 비어 있습니다. 우리는 비어 있지 않은 필드 만 처리하고 싶습니다.
$data = [
'name' => 'Alice',
'email' => '',
'phone' => null,
'age' => 25,
];
// 사용 array_filter 빈 값을 필터링하십시오(기본적으로 제거됩니다 false、null、''、0)
$filtered = array_filter($data);
dd($filtered);
산출:
[
'name' => 'Alice',
'age' => 25,
]
Laravel 에서이 처리는 종종 컨트롤러에서 요청 된 데이터를 수신 한 후 정리하는 데 사용됩니다.
public function store(Request $request)
{
$data = array_filter($request->only(['name', 'email', 'phone', 'age']));
// 다음 논리는 비어있는 필드 만 처리합니다
User::create($data);
return redirect()->to('https://m66.net/success');
}
기본 array_filter ()는 숫자 0과 문자열 "0"을 포함하여 모든 "false 값"을 제거합니다. 빈 줄을 제거하고 유효한 0S를 유지하려면 어떻게해야합니까?
$data = [
'status' => 0,
'code' => '0',
'description' => '',
];
// 맞춤형 콜백,빈 줄 만 필터링하십시오
$filtered = array_filter($data, function ($value) {
return $value !== '';
});
산출:
[
'status' => 0,
'code' => '0',
]
이 작문 방법은 주문 상태, 가격대 및 기타 논리를 처리하는 데 매우 실용적이며 효과적인 "0"의 오류를 피할 수 있습니다.
Laravel의 컬렉션은 또한 Array_Filter () 와 유사한 유사한 필터 () 메소드를 제공하지만 더 강력합니다. 예를 들어, 체인에서 작동 할 수 있습니다.
$users = collect([
['name' => 'Tom', 'email' => 'tom@m66.net'],
['name' => 'Jerry', 'email' => null],
['name' => 'Spike', 'email' => ''],
]);
$filtered = $users->filter(function ($user) {
return !empty($user['email']);
});
Filter ()를 직접 사용하여 논리를 단순화 할 수도 있습니다.
$filtered = $users->filter(fn($user) => !empty($user['email']));
산출:
[
['name' => 'Tom', 'email' => 'tom@m66.net'],
]
사용자 검색 기능을 개발하고 프론트 엔드가 선택적 매개 변수를 전달한다고 가정하고 비어 있지 않은 조건이 포함 된 쿼리 만 빌드하려고합니다.
public function index(Request $request)
{
$filters = array_filter($request->only(['name', 'email', 'status']), function ($val) {
return $val !== '';
});
$users = User::where($filters)->get();
return view('users.index', compact('users'));
}
이러한 방식으로 실제 입력에 따라 쿼리 조건을 유연하게 빌드하여 Where ( '', '') 와 같은 잘못된 쿼리를 피할 수 있습니다.
Array_Filter () 는 간단하지만 매우 강력한 도구입니다. Laravel의 요청 및 수집과 함께 사용하면 데이터 청소 및 코드 가독성의 효율성을 크게 향상시킬 수 있습니다.
프로젝트에서 Array_Filter ()를 사용하지 않았다면 지금 시도해보고 Laravel을 쓸 때 좋은 도우미가 될 수 있습니다!