Closures

http://php.net/closures

<?php
$data = array(3,2,8,5,6,1,7,4,9);
usort($data, 
             function($a,$b) { 
                 if($a%2==$b%2) return $a>$b;
                 return ($a%2) ? 1 : -1;
             }
     );
foreach($data as $v) echo "$v ";
Output
2 4 6 8 1 3 5 7 9