<pre>
<?php
$testData = array(
'abcd',
'wxyz',
'a1b2',
'_wxyz',
'#wxyz',
'_#wxyz',
'_#abcd',
'_abcd'
);
function mysort($a, $b)
{
$aFirst = substr($a, 0, 1);
$bFirst = substr($b, 0, 1);
if(ctype_alnum($aFirst) && ctype_alnum($bFirst))
{
return(strnatcasecmp($a, $b));
}
elseif(!ctype_alnum($aFirst) && ctype_alnum($bFirst))
{
return(-1);
}
elseif(ctype_alnum($aFirst) && !ctype_alnum($bFirst))
{
return(1);
}
else
{
return(mysort(substr($a,1), substr($b,1)));
}
}
echo "Before:\n";
print_r($testData);
usort($testData, 'mysort');
echo "After:\n";
print_r($testData);
?>
</pre>