PHP में array_filter() फ़ंक्शन सरणी के तत्वों को कॉलबैक फ़ंक्शन के आधार पर फ़िल्टर करता है। कॉलबैक true लौटाने वाले तत्व ही परिणाम में रहते हैं। कुंजियाँ संरक्षित रहती हैं।
सिंटैक्स (Syntax)
array_filter(array $arr, ?callable $callback = null, int $flag = 0): array
पैरामीटर्स (Parameters)
$arr − फ़िल्टर की जाने वाली सरणी।
$callback (वैकल्पिक) − फ़िल्टर फ़ंक्शन।
trueलौटाने पर तत्व रखा जाता है। यदिnullतो "falsy" मान (0, "", null, false, []) हटा दिए जाते हैं।$flag (वैकल्पिक) − कॉलबैक को पास किए जाने वाले तर्क:
ARRAY_FILTER_USE_KEY- केवल कुंजी पास करेंARRAY_FILTER_USE_BOTH- मान और कुंजी दोनों पास करें
रिटर्न वैल्यू (Return Value)
फ़िल्टर की गई नई सरणी लौटाता है (कुंजियाँ संरक्षित)।
उदाहरण (Examples)
उदाहरण 1: कॉलबैक के साथ सम संख्याएँ फ़िल्टर करना
<?php
function is_even($n) {
return ($n % 2) === 0;
}
$arr = array(3, 6, 9, 15, 20, 30, 45, 48, 59, 66);
$result = array_filter($arr, "is_even");
print_r($result);
?>
आउटपुट
Array
(
[1] => 6
[4] => 20
[5] => 30
[7] => 48
[9] => 66
)
उदाहरण 2: कॉलबैक के बिना - falsy मान हटाना
<?php $arr = [0, 1, false, 2, "", 3, null, "hello", [], 4]; $result = array_filter($arr); print_r($result); ?>
आउटपुट
Array
(
[1] => 1
[3] => 2
[5] => 3
[7] => hello
[9] => 4
)
उदाहरण 3: ARRAY_FILTER_USE_KEY - कुंजी के आधार पर फ़िल्टर
<?php $arr = ["a" => 1, "b" => 2, "c" => 3, "d" => 4]; // केवल विषम लंबाई वाली कुंजियाँ (यहाँ सभी 1 लंबाई) // बेहतर उदाहरण: संख्यात्मक कुंजियाँ $arr2 = [10 => "ten", 20 => "twenty", 30 => "thirty"]; $result = array_filter($arr2, fn($key) => $key > 15, ARRAY_FILTER_USE_KEY); print_r($result); // [20 => "twenty", 30 => "thirty"] ?>
उदाहरण 4: ARRAY_FILTER_USE_BOTH - कुंजी और मान दोनों
<?php $arr = ["apple" => 5, "banana" => 3, "cherry" => 8]; // कुंजी 'a' से शुरू हो AND मान > 5 $result = array_filter($arr, fn($v, $k) => $k[0] === 'a' && $v > 5, ARRAY_FILTER_USE_BOTH); print_r($result); // ["apple" => 5] - नहीं, 5 > 5 false // सही: $result = array_filter($arr, fn($v, $k) => $k[0] === 'c' && $v > 5, ARRAY_FILTER_USE_BOTH); print_r($result); // ["cherry" => 8] ?>
नोट
- कुंजियाँ हमेशा संरक्षित रहती हैं (रीइंडेक्स नहीं होता)।
- रीइंडेक्स करने के लिए
array_values()उपयोग करें:array_values(array_filter($arr, ...))। - PHP 8.0+ में एरो फ़ंक्शन (fn) अधिक संक्षिप्त हैं।