对数组中的对象排序usort

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)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值