$new_array = array_filter ($array, call_back_function(),$flag);
Parameter | DESCRIPTION |
---|---|
$array | Required : Input array to be filtered. |
$call_back_function() | Optional: Values or Keys to be passed for checking. |
$flag | Optional: 0: ARRAY_FILTER_USE_KEY , use only key for passing to callback function. 1 : ARRAY_FILTER_USE_BOTH : Use key and value both for passing to callback function. |
<?Php
$a= array(1,2,'v','bcd',5,7.3,88,105 );
$b=array_filter($a, 'is_int');
print_r($b);
?>
The output is here
Array ( [0] => 1 [1] => 2 [4] => 5 [6] => 88 [7] => 105 )
In our new array $b all the integers take from old array $a is kept. Note that the associated keys of the elements are also retained. We used print_r to display our $b array.
We have used is_int a built in PHP function which returns true if the element is an integer. Now let us try to use one user defined function as callback function.
<?Php
function check_length($str){
if(strlen($str) == 3 ){
return 'T';
}
}
$a= array(361,2,'vbc','bcd',5,7.3,88,10);
$b=array_filter($a, 'check_length');
print_r($b);
?>
Output is here
Array ( [0] => 361 [2] => vbc [3] => bcd [5] => 7.3 )
function check_size($value){
if(strlen($value) == 3 ){
return 'T';
}
}
function check_size_both($value,$key){
if(strlen($value) == 3 || is_int($key) ){
return 'T';
}
}
$input=array(1 =>'One',2=>'Two',3=>'Three','Four'=>'4th');
echo "-- With ARRAY_FILTER_USE_KEY --<br> ";
$result=array_filter($input,'check_size',0);
while (list ($key, $val) = each ($result)) {
echo "$key -> $val <br>";
}
echo "<br>-- With ARRAY_FILTER_USE_BOTH --<br> ";
$result=array_filter($input,'check_size_both',1);
while (list ($key, $val) = each ($result)) {
echo "$key -> $val <br>";
}
Output
-- With ARRAY_FILTER_USE_KEY --
1 -> One
2 -> Two
Four -> 4th
-- With ARRAY_FILTER_USE_BOTH --
1 -> One
2 -> Two
3 -> Three
Four -> 4th
3 -> Three is included in result ( ARRAY_FILTER_USE_BOTH ) as the key is an integer though the length of the value is not equal to three.