使用php根据特定值对数组进行排序[重复]

Posted

技术标签:

【中文标题】使用php根据特定值对数组进行排序[重复]【英文标题】:sort array on specific value with php [duplicate] 【发布时间】:2017-08-11 11:35:02 【问题描述】:

我有一个包含特定值的数组,我想根据其中的特定值对数组进行排序。例如,TOTCOM_METIER DESC。 例如:

Array
(
[0] => Array
    (
        [TOTCOM_METIER] => 1
        [metier] => Traiteur
    )

[1] => Array
    (
        [TOTCOM_METIER] => 4
        [metier] => Restauration traditionnelle
    )

[2] => Array
    (
        [TOTCOM_METIER] => 2
        [metier] => Coiffure
    )

)

我想在 TOTCOM_METIER DESC 上对其进行排序以获得这个结果:

Array
(
[0] => Array
    (
        [TOTCOM_METIER] => 4
        [metier] => Restauration traditionnelle
    )

[1] => Array
    (
        [TOTCOM_METIER] => 2
        [metier] => Coiffure
    )

[2] => Array
    (
        [TOTCOM_METIER] => 1
        [metier] => Traiteur
    )

)

【问题讨论】:

【参考方案1】:
<?php

$arr = Array(
    0 => Array
        (
            'TOTCOM_METIER' => 1,
            'metier' => 'Traiteur'
        ),
    1 => Array
        (
            'TOTCOM_METIER' => 4,
            'metier' => 'Restauration traditionnelle'
        ),
    2 => Array
        (
            'TOTCOM_METIER' => 2,
            'metier' => 'Coiffure'
        )
);

//define custom "comparator" (in reverse order)
function cmp($a, $b)
    $key = 'TOTCOM_METIER';
    if($a[$key] < $b[$key])
        return 1;
    else if($a[$key] > $b[$key])
        return -1;
    
    return 0;

usort($arr, "cmp");

print_r($arr);

?>

【讨论】:

就像一个魅力!谢谢 在 PHP >= 7 中,您还可以将所有 if 和返回更改为 return $a[$key] &lt;=&gt; $b[$key];,感谢 spaceship operator。【参考方案2】:

试试这个,

function compare($a, $b)

   return ($a['TOTCOM_METIER']< $b['TOTCOM_METIER']);

usort($your_array, "compare");

这里是 usort 文档,其中声明 使用用户定义的比较函数按值对数组进行排序

【讨论】:

【参考方案3】:

您如何获得这些数据?如果你从数据库系统中选择,你可以在你的选择sql中使用order by TOTCOM_METIER desc

【讨论】:

【参考方案4】:

这样你可以传递你想要的顺序,“desc”或“asc”

function sortAsc($a, $b) 
   return ($a[TOTCOM_METIER] < $b[TOTCOM_METIER]);


function sortDesc($a, $b) 
   return ($a[TOTCOM_METIER] > $b[TOTCOM_METIER]);


function sortMyArray($array, $order = "asc") 
    if($order === "desc") 
        return usort($array, "sortDesc");
    

    return usort($array, "sortAsc");


// Call it like
sortMyArray($array, "asc");

【讨论】:

以上是关于使用php根据特定值对数组进行排序[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何根据特定行中的值对 numpy 数组进行排序?

如何按值对数组进行排序(排序)? *有一个转折*

PHP按另一个数组中的特定键对数组进行排序[重复]

如何根据特定值按降序对数组进行排序[重复]

使用自定义函数对数组进行排序[重复]

根据值对python中的元组进行排序[重复]