bool usort ( array &$array , callable $value_compare_func )
本函数将用用户自定义的比较函数对一个数组中的值进行排序。 如果要排序的数组需要用一种不寻常的标准进行排序,那么应该使用此函数。
我们都知道对数组排序常用的sort,rsort,asort,arsort,ksort,krsort等,但是如果数组中保存的是对象,怎么按照对象中的元素排序呢?
首先我们生成一个对象数组
$arr1 = ['a' => 'peter', 'c' => 'henry'];
$arr2 = ['a' => 'henry', 'c' => 'peter'];
$arr1 = (object)$arr1;
$arr2 = (object)$arr2;
$arr3 = [$arr1, $arr2];
输入对象数组格式如下:
array (size=2)
0 =>
object(stdClass)[1]
public 'a' => string 'peter' (length=5)
public 'c' => string 'henry' (length=5)
1 =>
object(stdClass)[2]
public 'a' => string 'henry' (length=5)
public 'c' => string 'peter' (length=5)
使用sort排序查看结果:
sort($arr3);
var_dump($arr3);die;
输出结果如下:
array (size=2)
0 =>
object(stdClass)[2]
public 'a' => string 'henry' (length=5)
public 'c' => string 'peter' (length=5)
1 =>
object(stdClass)[1]
public 'a' => string 'peter' (length=5)
public 'c' => string 'henry' (length=5)
可见sort对于对象数组,按照第一个元素的值进行正序排列。
现在要求按照第二个key值c来排序,就需要usort出场了。
//排序函数
function my_sort($a,$b)
{
return strcmp($a->c,$b->c);
}
按照c的值升序排列
usort($arr3,'my_sort');
var_dump($arr3);
array (size=2)
0 =>
object(stdClass)[1]
public 'a' => string 'peter' (length=5)
public 'c' => string 'henry' (length=5)
1 =>
object(stdClass)[2]
public 'a' => string 'henry' (length=5)
public 'c' => string 'peter' (length=5)
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。