一尘不染

如何通过PHP内部数组的字段之一对多维数组排序?

php

假设我有一个模仿数据库表的数组。每个数组元素代表一行,并且在每一行内是另一个包含字段名称和值的数组。

Array
(
    [0] => Array
        (
            [name] => 'Sony TV'
            [price] => 600.00
        )

    [1] => Array
        (
            [name] => 'LG TV'
            [price] => 350.00
        )

    [2] => Array
        (
            [name] => 'Samsung TV'
            [price] => 425.00
        )  
}

我想要做的是按价格对行(外部数组元素)进行排序。以下是我要实现的示例:

Array
(
    [0] => Array
        (
            [name] => 'LG TV'
            [price] => 350.00
        )

    [1] => Array
        (
            [name] => 'Samsung TV'
            [price] => 425.00
        )

    [2] => Array
        (
            [name] => 'Sony TV'
            [price] => 600.00
        )        
}

如您所见,我不需要保留外部数组的键。


阅读 316

收藏
2020-05-26

共1个答案

一尘不染

您需要使用usort,该函数通过用户定义的函数对数组进行排序。就像是:

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

usort($yourArray,"cmp")
2020-05-26