您的位置:首页 > 其它

二维数组排序 array_multisort

2016-02-24 18:49 447 查看
参数中的数组被当成一个表的列并以行来进行排序 - 这类似 SQL 的 ORDER BY 子句的功能。第一个数组是要排序的主要数组。数组中的行(值)比较为相同的话,就会按照下一个输入数组中相应值的大小进行排序,依此类推。

第一个参数是数组,随后的每一个参数可能是数组,也可能是下面的排序顺序标志(排序标志用于更改默认的排列顺序)之一:

SORT_ASC - 默认,按升序排列。(A-Z)

SORT_DESC - 按降序排列。(Z-A)

随后可以指定排序的类型:

SORT_REGULAR - 默认。将每一项按常规顺序排列。

SORT_NUMERIC - 将每一项按数字顺序排列。

SORT_STRING - 将每一项按字母顺序排列。

public function my_sort($arrays, $sort_key, $sort_order = SORT_ASC, $sort_type = SORT_NUMERIC) {
if (is_array($arrays)) {
foreach ($arrays as $array) {
if (is_array($array)) {
$key_arrays[] = $array[$sort_key];
} else {
return false;
}
}
} else {
return false;
}
array_multisort($key_arrays, $sort_order, $sort_type, $arrays);
return $arrays;
}

public function test() {
$person = array(
array('id' => 7, 'name' => 'fj'),
array('id' => 2, 'name' => 'tom'),
array('id' => 3, 'name' => 'cerry'),
array('id' => 1, 'name' => 'bill'),
array('id' => 5, 'name' => 'linken'),
array('id' => 6, 'name' => 'aadana'),
array('id' => 4, 'name' => 'jordan'),
);
$person = $this->my_sort($person, 'id', SORT_ASC, SORT_NUMERIC);
var_dump($person);
}


排序后:

array(7) {
[0]=>
array(4) {
["id"]=>
int(1)
["name"]=>
string(4) "bill"
["weight"]=>
int(110)
["height"]=>
int(190)
}
[1]=>
array(4) {
["id"]=>
int(2)
["name"]=>
string(3) "tom"
["weight"]=>
int(53)
["height"]=>
int(150)
}
[2]=>
array(4) {
["id"]=>
int(3)
["name"]=>
string(5) "cerry"
["weight"]=>
int(120)
["height"]=>
int(156)
}
[3]=>
array(4) {
["id"]=>
int(4)
["name"]=>
string(6) "jordan"
["weight"]=>
int(70)
["height"]=>
int(170)
}
[4]=>
array(4) {
["id"]=>
int(5)
["name"]=>
string(6) "linken"
["weight"]=>
int(80)
["height"]=>
int(200)
}
[5]=>
array(4) {
["id"]=>
int(6)
["name"]=>
string(6) "aadana"
["weight"]=>
int(95)
["height"]=>
int(110)
}
[6]=>
array(4) {
["id"]=>
int(7)
["name"]=>
string(2) "fj"
["weight"]=>
int(100)
["height"]=>
int(180)
}
}


转载请注明出处:/article/10519712.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: