我无法对数组进行排序,以便数字出现在-
(连字符)之前。
今天我的阵列:
Array
(
[-] => Test
[0] => Test
[1] => Test
[2] => Test
)
我想要的订单:
Array
(
[0] => Test
[1] => Test
[2] => Test
[-] => Test
)
我在这里和谷歌都搜索过。但没有找到答案。我尝试过ksort()
和usort()
,但没有成功。
答案 0 :(得分:4)
您可以使用uksort
创建自己的比较函数,该函数处理此类特殊情况。
uksort($a, function($a, $b) {
if (is_numeric($a) && is_numeric($b)) return $a - $b;
else if (is_numeric($a)) return -1;
else if (is_numeric($b)) return 1;
return strcmp($a, $b);
});
答案 1 :(得分:4)
使用natural order sorting function
natsort()
示例:强>
$arr = ['_', 6, 3, 5];
natsort($arr);
print_r($arr);
<强>输出:强>
Array
(
[2] => 3
[3] => 5
[1] => 6
[0] => _
)
如果您想按键排序,那么您可以使用带标志 SORT_NATURAL ksort($arr, SORT_NATURAL);
示例:强>
$arr = [
'_' => 'test',
6 => 'test',
3 => 'test',
5 => 'test'
];
ksort($arr, SORT_NATURAL);
答案 2 :(得分:0)
功能检查($ x,$ y){
if(is_numeric($ x)&amp;&amp;!is_numeric($ y))
返回1;
否则if(!is_numeric($ x)&amp;&amp; is_numeric($ y))
返回-1;
否则
返回($ x&lt; $ y)? -1:1;
}
$ array = array(“ - ”,“1”,“2”,“3”);
usort($ array,'check');