Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 按子值按字母顺序对多维数组排序_Php - Fatal编程技术网

Php 按子值按字母顺序对多维数组排序

Php 按子值按字母顺序对多维数组排序,php,Php,需要按数组的特定子值进行自然(字母顺序)排序 如果按“用户名”排序=>=>ameyer、bsmith、mjohnson $arr=array( [0]=>array( [username]=>bsmith [name]=>Bob Smith ) [1]=>array( [username]=>mjohnson [name]=>Mike Johnson ) [

需要按数组的特定子值进行自然(字母顺序)排序

如果按“用户名”排序=>=>ameyer、bsmith、mjohnson

$arr=array(
    [0]=>array(
        [username]=>bsmith
        [name]=>Bob Smith
    )
    [1]=>array(
        [username]=>mjohnson
        [name]=>Mike Johnson
    )
    [2]=>array(
        [username]=>ameyer
        [name]=>Meyer Adam
    )
)
$arr=array(
    [0]=>array(
        [username]=>ameyer
        [name]=>Meyer Adam
    )
    [1]=>array(
        [username]=>bsmith
        [name]=>Bob Smith
    )
    [2]=>array(
        [username]=>mjohnson
        [name]=>Mike Johnson
    )

)
如果按“名称”排序=>bsmith、ameyer、mjohnson

$arr=array(
    [0]=>array(
        [username]=>bsmith
        [name]=>Bob Smith
    )
    [1]=>array(
        [username]=>mjohnson
        [name]=>Mike Johnson
    )
    [2]=>array(
        [username]=>ameyer
        [name]=>Meyer Adam
    )
)
$arr=array(
    [0]=>array(
        [username]=>ameyer
        [name]=>Meyer Adam
    )
    [1]=>array(
        [username]=>bsmith
        [name]=>Bob Smith
    )
    [2]=>array(
        [username]=>mjohnson
        [name]=>Mike Johnson
    )

)
最优雅的方式是什么


我应该使用uasort吗?

您需要使用
usort
,这将是最简单、最快的方法。您可以使用strcmp的结果代码来确定alpha排序顺序

$arr=array(
    [0]=>array(
        [username]=>bsmith
        [name]=>Bob Smith
    )
    [1]=>array(
        [username]=>ameyer
        [name]=>Meyer Adam
    )
    [2]=>array(
        [username]=>mjohnson
        [name]=>Mike Johnson
    )
)

您需要使用
usort
,这将是最简单和最快的方法。您可以使用strcmp的结果代码来确定alpha排序顺序

$arr=array(
    [0]=>array(
        [username]=>bsmith
        [name]=>Bob Smith
    )
    [1]=>array(
        [username]=>ameyer
        [name]=>Meyer Adam
    )
    [2]=>array(
        [username]=>mjohnson
        [name]=>Mike Johnson
    )
)
您可以使用:

您可以使用:


uasort工作方式的可能重复?在这种特殊情况下,$a和$b是什么?
uasort
调用
sortByUsername
,并对这两个元素进行比较。也就是说,我更喜欢JimiDini的解决方案,它更灵活,不需要使用uasort。usort就足够了,因为顶级数组不是关联的。另请参见我的通用答案solution@ihtusphp引擎将从您的数组中发送多对不同的元素,直到它获得足够的信息,知道排序后的数组应该是什么样子为止—第一次发送0和1对;那么公元1年和公元2年,uasort是如何工作的?在这种特殊情况下,$a和$b是什么?
uasort
调用
sortByUsername
,并对这两个元素进行比较。也就是说,我更喜欢JimiDini的解决方案,它更灵活,不需要使用uasort。usort就足够了,因为顶级数组不是关联的。另请参见我的通用答案solution@ihtusphp引擎将从您的数组中发送多对不同的元素,直到它获得足够的信息,知道排序后的数组应该是什么样子为止—第一次发送0和1对;那么公元1年到2年?