gpt4 book ai didi

php - 我如何在 laravel 上对对象进行排序?

转载 作者:可可西里 更新时间:2023-10-31 23:58:07 25 4
gpt4 key购买 nike

我的对象数组 ($c) 是这样的:

Array
(
[0] => stdClass Object
(
[id] => 3
[name] => chelsea.png
)

[1] => stdClass Object
(
[id] => 4
[name] => arsenal.png
)

[2] => stdClass Object
(
[id] => 5
[name] => mu.png
)

[3] => stdClass Object
(
[id] => 1
[name] => city.png
)

)

我想按id排序

如果在 php 中正常,我会这样尝试:

function sort_by_id( $a, $b )
{
if( $a->id == $b->id ){ return 0 ; }
return ($a->id < $b->id) ? -1 : 1;
}
usort($c,'sort_by_id');
echo '<pre>';print_r($c);echo '</pre>';

有效

但是我如何使用 laravel 实现它呢?

我这样尝试:

public function add($param)
{
...
usort($c, $this->sortById());
echo '<pre>';print_r($c);echo '</pre>';die();
...
}

private function sortById($a, $b)
{
if($a->id == $b->id) {
return 0 ;
}
return ($a->id < $b->id) ? -1 : 1;
}

没用

存在这样的错误:

Undefined property ... $sortById ...

我该如何解决?

最佳答案

不要重新发明轮子。 Laravel 是一个出色的框架,它已经为您做了很多工作。

首先,您需要将数组转换为集合:

$c = collect($c);

现在,为了处理集合,您有一组不错的 available methods 你可以一起工作。在您的情况下,您需要 sortBy() :

$sorted = $c->sortBy('id');

或者,您可以传递回调:

$sorted = $c->sortBy(function ($item, $key) {
return $item->id;
});

这两个都将返回一个 Collection 对象。如果您想取回数组,请对结果使用 all()toArray():

$c = $c->all();

// or

$c = $c->toArray();

关于php - 我如何在 laravel 上对对象进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44612789/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com