为了账号安全,请及时绑定邮箱和手机立即绑定

如何根据姓氏过滤数组?

如何根据姓氏过滤数组?

PHP
扬帆大鱼 2021-12-24 10:14:09
我有一个数组如下:Array(    [0] => 'Sarah, Green',    [1] => 'Adam, Brown',    [2] => 'Fred, Able');从这个数组中,我需要根据姓氏进行排序。我试过以下代码:$this->sortByLastName($data);private function sortByLastName($data){    $result = uasort($data, function($a, $b) {        $splitFirstItem = explode(',', $a);        $spliteSecondItem = explode(',', $b);        $firstItemElement = trim(end($splitFirstItem));        $secondItemElement = trim(end($spliteSecondItem));        return strcasecmp($firstItemElement, $secondItemElement);    });    return $result;}但我只是得到真实的结果。我在这里犯了什么错误。
查看完整描述

2 回答

?
富国沪深

TA贡献1790条经验 获得超9个赞

uasort简单地返回true/false取决于它是否成功完成。该数组已就地排序,因此您的代码应如下所示:


private function sortByLastName($data)

{

    uasort($data, function($a, $b) {

        $splitFirstItem = explode(',', $a);

        $spliteSecondItem = explode(',', $b);


        $firstItemElement = trim(end($splitFirstItem));

        $secondItemElement = trim(end($spliteSecondItem));


        return strcasecmp($firstItemElement, $secondItemElement);

    });



    return $data;

}


查看完整回答
反对 回复 2021-12-24
?
心有法竹

TA贡献1866条经验 获得超5个赞

如下更改您的功能。


private function sortByLastName($data)

{

    uasort($data, function($a, $b) {

        $splitFirstItem = explode(',', $a);

        $spliteSecondItem = explode(',', $b);


        $firstItemElement = trim(end($splitFirstItem));

        $secondItemElement = trim(end($spliteSecondItem));


        return strcasecmp($firstItemElement, $secondItemElement);

    });



    return $data;

}

这是因为 uasort 不返回数组而是更改传递给它的数组。它仅根据过程是否成功返回布尔值 true 或 false


查看完整回答
反对 回复 2021-12-24
  • 2 回答
  • 0 关注
  • 216 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号