Yeah... I know... recursion... T_T The bane of my existence. I've written about one recursive function in my life that I've understood lol. Not sure what you mean by your last sentence though. In any case I modified the sorting function to the following:
function makeSortFunction($sortBy, $reverse = false){
$code = '$sortBy = array(';
foreach($sortBy as $value){
$code .= "'" . $value . "', ";
}
$code = substr($code, 0, -2);
$code .= ');';
if($reverse) $code .= '$reverse = -1;';
else $code .= '$reverse = 1;';
$code .= '$retval = 0;';
$code .= 'foreach($sortBy as $values){';
$code .= '$retval = strnatcmp($a[$values], $b[$values]);';
$code .= '$retval *= $reverse;';
$code .= 'if($retval) break;';
$code .= '}';
$code .= 'return $retval;';
return create_function('$a, $b', $code);
}