Sorry but why can't this work:
function filter($var) {
return($var['id'] < 4);
}
$t1 = array(
array("key"=>"date", "value"=>"effe", "id"=>2),
array("key"=>"date2", "value"=>"jieffe", "id"=>3),
array("key"=>"date3", "value"=>"efjife", "id"=>4),
array("key"=>"date4", "value"=>"effijoe", "id"=>5),
);
array_filter($t1, "filter");
var_dump($t1);
tested on http://writecodeonline.com/php/
array_filter() returns the filtered array, it's not pass by reference:
$t1 = array_filter($t1, "filter");
var_dump($t1);// done