【发布时间】:2018-12-20 14:49:48
【问题描述】:
我在递归创建排序集合时遇到问题... 假设我有一个项目集合,每个项目都有一个对它前面的项目的描述。许多项目可以在前面有相同的项目。如果该项在行前,则值为 0。
以下属于类的方法的问题在于,它只返回集合的第一行项目,即那些应该在前面的项目。
/**
* Returns a collection of items
*
* @param \Illuminate\Support\Collection $list
* @param int $prev
*
* @return \Illuminate\Support\Collection
*/
public function getSortOrder( $list, $prev = 0 ){
$result = collect();
$with_prevs = $list->filter( function( $item ) use ( $prev ){
return $item->data[ 'prev' ] == $prev;
} );
$list = $list->diff( $with_prevs );
if( $with_prevs ->count() > 0 ){
foreach( $with_prevs as $with_prev ){
$result->push( $with_prev );
if( $list->count() > 0 ){
$result->concat( $this->getSortOrder( $list, $with_prev->id ) );
}
}
}
return $result;
}
【问题讨论】:
标签: php sorting recursion laravel-5