由于工作需求,需要对一个二维数组按照一个一维数组的顺序排序,首先想到了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刚好满足功能需要,特写以记录。需要的朋友可以拿去用。