php 二维数组排序uasort

由于工作需求,需要对一个二维数组按照一个一维数组的顺序排序,首先想到了array_multisort,不知道什么原因排序没有起到作用,又请教了主管,推荐了这个uasort函数。现在介绍描述一下该函数的作用:uasort() 函数使用用户自定义的比较函数对数组排序,并保持索引关联(不为元素分配新的键)如果成功则返回 TRUE,否则返回 FALSE。该函数主要用于对那些单元顺序很重要的结合数组进行排序。

下附上代码:

<?php
$arr1 = [
    ['val' => '3', 'id' => '1'],
    ['val' => '11', 'id' => '11'],
    ['val' => '92', 'id' => '2'],
    ['val' => '15', 'id' => '14'],
    ['val' => '17', 'id' => '3'],
    ['val' => '6', 'id' => '5'],
];
echo '<pre>';
$val = ['6', '17', '92', '15', '11', '3'];
uasort($arr1, function($first, $second) {
    global $val;
    return array_search($first['val'], $val) > array_search($second['val'], $val);
});
print_r($arr1);
exit();

输出结果为:

array
(
    [5] => Array
        (
            [val] => 6
            [id] => 5
        )

    [4] => Array
        (
            [val] => 17
            [id] => 3
        )

    [2] => Array
        (
            [val] => 92
            [id] => 2
        )

    [3] => Array
        (
            [val] => 15
            [id] => 14
        )

    [1] => Array
        (
            [val] => 11
            [id] => 11
        )

    [0] => Array
        (
            [val] => 3
            [id] => 1
        )
)

以上方法涉及到array_search函数:在数组中搜索给定的值,如果成功则返回首个相应的键名。失败返回false。

uasort刚好满足功能需要,特写以记录。需要的朋友可以拿去用。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值