diff --git a/cake/libs/set.php b/cake/libs/set.php index 8d204b18c9c..b16aeb59a17 100644 --- a/cake/libs/set.php +++ b/cake/libs/set.php @@ -61,10 +61,10 @@ public static function merge($arr1, $arr2 = null) { * @param boolean $isArray Force to tell $var is an array when $var is empty * @return mixed Either filtered array, or true/false when in callback */ - public static function filter($var, $isArray = false) { - foreach ((array)$var as $k => $v) { - if (!empty($v) && is_array($v)) { - $var[$k] = array_filter($v, array('Set', '_filter')); + public static function filter(array $var) { + foreach ($var as $k => $v) { + if (is_array($v)) { + $var[$k] = Set::filter($v); } } return array_filter($var, array('Set', '_filter')); diff --git a/cake/tests/cases/libs/set.test.php b/cake/tests/cases/libs/set.test.php index bbd3e581cd6..b974bfe3d6d 100644 --- a/cake/tests/cases/libs/set.test.php +++ b/cake/tests/cases/libs/set.test.php @@ -100,8 +100,15 @@ function testFilter() { $result = Set::filter(array(1, array('empty', false))); $expected = array(1, array('empty')); $this->assertEqual($expected, $result); + + $result = Set::filter(array(1, array('2', false, array(3, null)))); + $expected = array(1, array('2', 2 => array(3))); + $this->assertEqual($expected, $result); + + $this->assertSame(array(), Set::filter(array())); } + /** * testNumericArrayCheck method *