加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 使用字符串值自定义数组排序

发布时间:2020-12-13 17:47:06 所属栏目:PHP教程 来源:网络整理
导读:假设我有这个数组: $array = array( array("id" = 7867867,"animal" = "Dog"),array("id" = 3452342,"animal" = "Lion"),array("id" = 1231233,array("id" = 5867867,array("id" = 2222211,"animal" = "Zeebra"),array("id" = 2222222,"animal" = "Cat"),ar
假设我有这个数组:

$array = array(
    array("id" => 7867867,"animal" => "Dog"),array("id" => 3452342,"animal" => "Lion"),array("id" => 1231233,array("id" => 5867867,array("id" => 2222211,"animal" => "Zeebra"),array("id" => 2222222,"animal" => "Cat"),array("id" => 3333333,array("id" => 4444444,"animal" => "Zeebra")
);

现在我一直在尝试做的是使用php排序函数,以便能够根据特定规则对其进行排序(不是按字母顺序)

客户希望这些信息按“Lion first,Dog second,Zeebra third,Cat 4th”排序.

像这样的东西:

$array = array(
    array("id" => 3452342,array("id" => 7867867,);

该阵列将使用“动物”值进行排序,并且将基于预先确定的规则.

我试图找出php排序函数,但我只能按照字母顺序或数字顺序对数组进行排序.

我已经开始工作的是一个if语句和循环块,我想尽快摆脱那个慢速代码.

解决方法

使用Jonathan建议使用usort,您可以在单独的函数中定义自定义规则以进行排序,例如:

function getAnimalValue($animal) {
    switch($animal) {
        case 'Lion':
            return 1;
        case 'Dog':
            return 2;
        case 'Zeebra':
            return 3;
        case 'Cat':
            return 4;
    }
    return 0;
}

然后,实现自己的比较功能:

function compare($itemA,$itemB) {
    $a = getAnimalValue($itemA['animal']);
    $b = getAnimalValue($itemB['animal']);
    if ($a == $b) {
        return 0;
    }
    return ($a < $b) ? -1 : 1;
}

最后,使用compare函数调用usort:

usort($array,"compare");

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读