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.
We can use one callback function to check all the elements of the array. The callback function check each element and returns true or false. A new array is retuned with True value elements of the main array. Array key of parent array is preserved.
Filtering only integers.
We have one array with string and integer data. Let us try to filter elements and keep only integers.
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.
Flag = 0 for ARRAY_FILTER_USE_KEY ( default )
Flag = 1 for ARRAY_FILTER_USE_BOTH
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.
← Subscribe to our YouTube Channel here
This article is written by plus2net.com team.
https://www.plus2net.com