PHP 개발에서 배열 작업은 일상 작업에서 가장 일반적인 링크입니다. 우리는 거의 매일 "청소 어레이"를하고 있습니다. 사용자가 제출 한 양식 데이터를 처리하든 인터페이스에서 반환 된 데이터를 정리하는지 여부에 관계없이 가장 일반적인 요구 중 하나는 다음과 같습니다.
다행히도 PHP는 매우 우아한 방법을 제공합니다 : Array_Filter () . 이 기사는이 기능의 사용법에 대한 깊은 이해를 안내하고 빈 요소를 배열에서 효율적이고 유연하게 필터링하는 데 도움이되는 몇 가지 실용적인 팁을 공유합니다.
php array_filter () 의 기본 동작은 다음을 포함하여 배열에서 "false"값을 가진 요소를 제거하는 것입니다.
빈 문자열 '' '
번호 0 및 문자열 '0'
널
거짓
빈 배열 []
가장 간단한 예를 살펴 보겠습니다.
$data = ['apple', '', null, 'banana', 0, '0', false];
$filtered = array_filter($data);
print_r($filtered);
출력 결과는 다음과 같습니다.
Array
(
[0] => apple
[3] => banana
)
Array_Filter () 는 기본적으로 "콘텐츠가없는 것처럼 보이는 모든 값"을 제거한다는 것을 알게됩니다. 이 사용법은 대부분의 시나리오에 충분합니다.
'0' 또는 0이 필터링되기를 원하지 않으면 콜백 함수를 사용자 정의 할 수 있습니다. array_filter ()를 필터링하여 실제로 "빈"이라고 생각하는 값 만 널 또는 '' '를 필터링하십시오.
$data = ['title' => '', 'price' => 0, 'available' => false, 'sku' => '0', 'description' => null];
$filtered = array_filter($data, function($value) {
return !is_null($value) && $value !== '';
});
print_r($filtered);
산출:
Array
(
[price] => 0
[available] =>
[sku] => 0
)
이 방법은 특히 사용자 양식 데이터 또는 구성 항목을 처리하는 데 적합하며 실수로 의미있는 "제로 값"을 삭제하지 않습니다.
게시물 요청을 통해 사용자가 입력 한 데이터를 API로 보내고 싶다고 가정하면 NULL 값을 전달하고 싶지 않습니다.
$formData = [
'name' => '장 산',
'email' => '',
'phone' => null,
'age' => 25
];
$cleanData = array_filter($formData, function($val) {
return !is_null($val) && $val !== '';
});
$apiUrl = 'https://api.m66.net/user/submit';
$options = [
'http' => [
'header' => "Content-type: application/x-www-form-urlencoded\r\n",
'method' => 'POST',
'content' => http_build_query($cleanData),
]
];
$context = stream_context_create($options);
$result = file_get_contents($apiUrl, false, $context);
echo $result;
이런 식으로, 우리는 API에 많은 쓸모없는 필드를받지 못하게하기 위해 유효한 데이터 만 보냅니다.
배열이 프론트 엔드에서 제출 된 중첩 형식과 같은 다차원 인 경우 재귀 적으로 청소해야합니다.
function recursive_filter(array $input) {
foreach ($input as $key => &$value) {
if (is_array($value)) {
$value = recursive_filter($value);
}
}
return array_filter($input, function($val) {
return $val !== '' && !is_null($val);
});
}
$data = [
'user' => [
'name' => 'Li Si',
'email' => '',
'tags' => ['', null, 'developer']
],
'status' => null
];
$cleaned = recursive_filter($data);
print_r($cleaned);
이러한 방식으로 처리 한 후 배열은 깨끗하고 빈 값을 놓치거나 유효한 콘텐츠를 잘못 삭제하지 않습니다.
위의 경우를 통해 다음을 볼 수 있습니다.
Array_Filter () 의 기본 동작은 이미 매우 강력하며 다양한 "거짓 값"을 빠르게 제거합니다.
사용자 정의 콜백을 사용하면 필터를 필터링 할 내용을 정확하게 제어 할 수 있습니다.
복잡한 구조를 다룰 때는 재귀적인 방식으로 쉽게 처리 할 수 있습니다.
실제 개발에서는 데이터베이스 작성 전에 양식 데이터, 인터페이스 요청 매개 변수 및 데이터 필터링을 정리하는 데 사용될 수 있습니다.
요컨대,이 기능을 사용하여 더 능숙할수록 데이터가 깨끗하고 코드가 더 우아 할 수 있습니다!
관련 태그:
array_filter