function permutation($array){
$r = array();
if(count($array) <= 1) return array($array);
foreach($array as $key=>$val){
$copy = $array;
unset($copy[$key]);
$rest = permutation($copy);
foreach($rest as $row){
$row[]=$val;
$r[]=$row;
}
}
return $r;
}
print_r(permutation(array(0,1,2,3)));