有没有办法订购在Laravel Collection中过滤的商品?

时间:2014-12-31 00:46:45

标签: php laravel collections

我有以下过滤器代码:

$cards->filter(function($card) {
    if(str_contains($card->text, 'white') || str_contains($card->text, 'blue') || str_contains($card->text, 'black') || str_contains($card->text, 'red') || str_contains($card->text, 'green')) {
        return true;
    }
});

我想按照白色,蓝色,黑色,红色,绿色的顺序得到我的结果。我怎样才能使结果按顺序排列?

样本卡数据:

stdClass Object
(
    [text] => Flowers are white.
)

1 个答案:

答案 0 :(得分:3)

$colors = ['white', 'blue', 'black', 'red', 'green'];

$cards = $cards->filter(function($card) use ($colors)
{
    return str_contains($card->text, $colors);
})
->sortBy(function($card) use ($colors)
{
    foreach ($colors as $index => $color)
    {
        if (str_contains($card->text, $color))
        {
            return $index;
        }
    }
})
->values();