Suppose you have array with value of 1 to 12.
And you want to separate odd and even numbers in different array, then use below code.
If you want to use array_filter with a class method as the callback, you can use a psuedo type callback like below, which will print only even numbers from 1 to 10 array.
And one another example of array_filter within a class to access a protected method from that same class:
And you want to separate odd and even numbers in different array, then use below code.
<?php
function odd($var)
{
// returns whether the input integer is odd
return($var & 1);
}
function even($var)
{
// returns whether the input integer is even
return(!($var & 1));
}
$array1 = array("a"=>1, "b"=>2, "c"=>3, "d"=>4, "e"=>5);
$array2 = array(6, 7, 8, 9, 10, 11, 12);
echo "Odd :\n";
echo "<pre>";
print_r(array_filter($array1, "odd"));
echo "</pre>";
echo "Even:\n";
echo "<pre>";
print_r(array_filter($array2, "even"));
echo "</pre>";
?>
Output:
Odd :
Array
(
[a] => 1
[c] => 3
[e] => 5
)
Even:
Array
(
[0] => 0
[1] => 6
[3] => 8
[5] => 10
[7] => 12
)
If you want to use array_filter with a class method as the callback, you can use a psuedo type callback like below, which will print only even numbers from 1 to 10 array.
<?php class Test {
public function doFilter($array)
{
return array_filter($array, array($this, 'callbackMethodName'));
}
protected function callbackMethodName($element)
{
return $element % 2 === 0;
}
}
$example = new Test;
echo "<pre>";
print_r($example->doFilter(range(1, 10)));
echo "</pre>";?>
Output:
Array
(
[1] => 2
[3] => 4
[5] => 6
[7] => 8
[9] => 10
)
And one another example of array_filter within a class to access a protected method from that same class:
<?php
class Bar {
public function foo()
{
$array1 = array("a"=>1, "b"=>2, "c"=>3, "d"=>4, "e"=>5);
print_r(array_filter($array1, array($this, 'baz')));
}
protected function baz($var)
{
return($var & 1);
}
}
$bar = new Bar();
echo "<pre>";
print_r($bar->foo());
echo "</pre>";
?>
Output:
Array
(
[a] => 1
[c] => 3
[e] => 5
)

0 Comments