【发布时间】:2017-11-20 14:53:52
【问题描述】:
我的对象数组($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;
}
没有用
存在这样的错误:
未定义的属性 ... $sortById ...
我该如何解决?
【问题讨论】:
-
虽然提供了对包含对象的数组进行排序的解决方案,但我建议您看一下,为什么您首先会得到这样的结构。 Laravel 在大多数情况下都内置了
toArray方法,因此您可以在调用时将对象转换为数组。
标签: php laravel sorting laravel-5.3