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

PHP中的数组排序有多种方式

发布时间:2020-12-13 16:56:00 所属栏目:PHP教程 来源:网络整理
导读:我有两个数组例如 数组1: Array( [id] = 50575 [name] = Funbox - Pirates and Princesses [venue_id] = 3248) 数组2: Array( [0] = Array ( [id] = 53295 [name] = Funbox - Pirates and Princesses [venue_id] = 2954 ) [1] = Array ( [id] = 53323 [nam
我有两个数组例如
数组1:

Array(
    [id] => 50575
    [name] => Funbox - Pirates and Princesses
    [venue_id] => 3248
)

数组2:

Array
(
    [0] => Array
        (
            [id] => 53295
            [name] => Funbox - Pirates and Princesses
            [venue_id] => 2954
        )

    [1] => Array
        (
            [id] => 53323
            [name] => Funbox - Pirates and Princesses
            [venue_id] => 2954
        )

    [2] => Array
        (
            [id] => 53391
            [name] => Funbox - Pirates and Princesses
            [venue_id] => 2954
        )

    [3] => Array
        (
            [id] => 53402
            [name] => Funbox - Pirates and Princesses
            [venue_id] => 2954
        )

    [4] => Array
        (
            [id] => 57130
            [name] => Funbox - Pirates and Princesses
            [venue_id] => 2980
        )

    [5] => Array
        (
            [id] => 57142
            [name] => Funbox - Pirates and Princesses
            [venue_id] => 3248
        )

    [6] => Array
        (
            [id] => 50575
            [name] => Funbox - Pirates and Princesses
            [venue_id] => 3248
        )

    [7] => Array
        (
            [id] => 50601
            [name] => Funbox - Pirates and Princesses
            [venue_id] => 3248
        )

    [8] => Array
        (
            [id] => 56113
            [name] => Funbox - Pirates and Princesses
            [venue_id] => 2882
        )
)

数组1将是数组2中的任何一个子数组,

现在我希望在数组2中第一个数组应该是数组1的那个,之后那些具有与数组1地址id相同的场地ID的子数组应该存在,然后是所有其他数组.
怎么做这个排序?
对不起,如果有任何英语错误我不是很好.

预期产量:

Array
    (
        [6] => Array
            (
                [id] => 50575
                [name] => Funbox - Pirates and Princesses
                [venue_id] => 3248
            )
        [5] => Array
            (
                [id] => 57142
                [name] => Funbox - Pirates and Princesses
                [venue_id] => 3248
            )
        [7] => Array
            (
                [id] => 50601
                [name] => Funbox - Pirates and Princesses
                [venue_id] => 3248
            )
        [0] => Array
            (
                [id] => 53295
                [name] => Funbox - Pirates and Princesses
                [venue_id] => 2954
            )

        [1] => Array
            (
                [id] => 53323
                [name] => Funbox - Pirates and Princesses
                [venue_id] => 2954
            )

        [2] => Array
            (
                [id] => 53391
                [name] => Funbox - Pirates and Princesses
                [venue_id] => 2954
            )

        [3] => Array
            (
                [id] => 53402
                [name] => Funbox - Pirates and Princesses
                [venue_id] => 2954
            )

        [4] => Array
            (
                [id] => 57130
                [name] => Funbox - Pirates and Princesses
                [venue_id] => 2980
            )
        [8] => Array
            (
                [id] => 56113
                [name] => Funbox - Pirates and Princesses
                [venue_id] => 2882
            )
    )

解决方法

您可以使用 usort将其排序为示例订单.

function cmp($a,$b) {
  return $b["venue_id"] - $a["venue_id"];
}

usort($array2,"cmp");

所有这一切都是由venue_id降序排序.因此,具有相同venue_id的所有数组将被分组,最高的venue_id位于顶部.如果你想要别的东西,你的答案有点不清楚.

编辑:我已经考虑了这个问题,并提出了一个应该做我认为你要求的功能.它并不完美,但应该有效.

function customSort($array1,$array2) {
    global $primaryVenue_id;
    $primaryVenue_id = $array1["venue_id"];
    function cmp($a,$b) {
        global $primaryVenue_id;
        if ($a["venue_id"] == $primaryVenue_id) return -1;
        elseif ($b["venue_id"] == $primaryVenue_id) return 1;
        else return $b["venue_id"] - $a["venue_id"];
    }

    usort($array2,"cmp");

    unset($primaryVenue_id);

    return $array2;
}

基本上,如果你调用函数customSort($array1,$array2),它将返回$array2,所有子数组首先包含与$array1相同的venue_id,然后是id的其余降序.

(编辑:李大同)

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

    推荐文章
      热点阅读