需要你的专业帮助。我有这样的数组:
array(
array('id'=>1, 'name'=>'b'),
array('id'=>2, 'name'=>'a'),
array('id'=>3, 'name'=>'c'));
需要按name
排序,但当我使用ksort()
或asort()
时,数组按id
排序。
我尝试过使用array_multisort()
,但这个功能无法帮助我。
答案 0 :(得分:3)
$ar = array(
array('id'=>1, 'name'=>'b'),
array('id'=>2, 'name'=>'a')
);
array_multisort($ar[0], SORT_ASC, SORT_STRING,
$ar[1], SORT_NUMERIC, SORT_DESC);
var_dump($ar);
首先定义你的数组然后对它们进行排序,这将使生活更轻松。
答案 1 :(得分:3)
我们可以使用这个功能:
<?php
$hold = array(
array('id'=>1, 'name'=>'b'),
array('id'=>2, 'name'=>'a'),
array('id'=>3, 'name'=>'c'));
//array before sorting
var_dump($hold);
function aasort (&$array, $key) {
$sorter=array();
$ret=array();
reset($array);
foreach ($array as $ii => $va) {
$sorter[$ii]=$va[$key];
}
asort($sorter);
foreach ($sorter as $ii => $va) {
$ret[$ii]=$array[$ii];
}
$array=$ret;
}
aasort($hold,"name");
//array after sorting
var_dump($hold);
?>
答案 2 :(得分:2)
您可以将名称指定为键,然后排序。
$array = array(array('id'=>1, 'name'=>'b'), array('id'=>2, 'name'=>'a'), array('id'=>3), 'name'=>'c')
$newarray = array();
foreach ($array as $key => $item) {
$newarray[$item['name']] = $item;
}
ksort($newarray);