自定义PHP排序?

自定义PHP排序?,php,sql,sorting,Php,Sql,Sorting,我正在尝试对数组进行排序 我有一个数据数组,其中每一行表示数组中的一个新索引。我需要按第一个数字降序排序 我的阵列: 7[^.^]username[^.^]idnumber[^.^]State[^.^] 13[^.^] username[^.^] idnumber[^.^] State[^.^] 9[^.^] username[^.^] idnumber[^.^] State[^.^] 19[^.^] username[^.^] idnumber[^.^] State[^.^] ksort和a

我正在尝试对数组进行排序

我有一个数据数组,其中每一行表示数组中的一个新索引。我需要按第一个数字降序排序

我的阵列:

7[^.^]username[^.^]idnumber[^.^]State[^.^]
13[^.^] username[^.^] idnumber[^.^] State[^.^]
9[^.^] username[^.^] idnumber[^.^] State[^.^]
19[^.^] username[^.^] idnumber[^.^] State[^.^]
ksort和asort是一种工作,但它认为“9”大于“81”,因此它将返回以下内容:

13[^.^] username[^.^] idnumber[^.^] State[^.^]
19[^.^] username[^.^] idnumber[^.^] State[^.^]
7[^.^]username[^.^]idnumber[^.^]State[^.^]
9[^.^] username[^.^] idnumber[^.^] State[^.^]

我知道我需要某种定制的排序,但我不知道怎么做。谢谢。

PHP提供了一个用于创建用户定义排序的函数。它的工作原理是创建一个比较函数,该函数将根据所比较的两个值以及您如何定义逻辑返回1、0或-1

以下是文档中的示例:

<?php

function cmp($a, $b)
{
    if ($a == $b) {
        return 0;
    }
    return ($a < $b) ? -1 : 1;
}

$a = array(3, 2, 5, 6, 1);

usort($a, "cmp");

foreach ($a as $key => $value) {
    echo "$key: $value\n";
}

?> 
所有PHP函数都可以使用sort_标志作为第二个参数。尝试使用
数字排序

sort($myArray,sort\u NUMERIC)

或用于自定义排序回调

usort($array, function ($a, $b) { return (int)$a - (int)$b; });
这是因为将“13[^.^]用户名[^.^]…”强制转换为
int
将切断第一个非int字符之后的任何内容


不过,您最好先对“数组”进行预处理,将该数值分离到自己的数组索引中。

这是什么类型的PHP数组?我看到里面有16张脸。您应该发布
print\u r
var\u dump
的输出……您可能可以使用natsort:sort($myArray,sort\u NUMERIC)进行排序;是完美的,但我可以让它下降,而不是上升吗;可以工作,但我觉得对于大量数据来说速度会很慢。使用:)
usort($array, function ($a, $b) { return (int)$a - (int)$b; });