Php 是否有办法订购在Laravel集合中过滤的项目?

Php 是否有办法订购在Laravel集合中过滤的项目?,php,laravel,collections,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'

我有以下过滤代码:

$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.
)


strpos
将返回
0
,如果字符串位于草堆的开头。由于错误,它会导致您的
过滤器将它们过滤掉。此过滤器工作正常。只是顺序需要改变。哦,我重读了你说的。你有什么建议吗?没有。你能给我们展示一下集合中的一个样本数组吗?如果字符串位于那堆草堆的开头,请使用Laravel的
str_contains
,而不是
strpos
将返回
0
。由于错误,它会导致您的
过滤器将它们过滤掉。此过滤器工作正常。只是顺序需要改变。哦,我重读了你说的。你有什么建议吗?没有。你能给我们展示一下集合中的一个样本数组吗?如果字符串位于那堆草堆的开头,请使用Laravel的
str_contains
,而不是
strpos
将返回
0
。由于错误,它会导致您的
过滤器将它们过滤掉。此过滤器工作正常。只是顺序需要改变。哦,我重读了你说的。你有什么建议吗?没有。你能给我们展示一下集合中的一个样本数组吗?如果字符串位于那堆草堆的开头,请使用Laravel的
str_contains
,而不是
strpos
将返回
0
。由于错误,它会导致您的
过滤器将它们过滤掉。此过滤器工作正常。只是顺序需要改变。哦,我重读了你说的。你有什么建议吗?没有。你能给我们展示一个样本阵列吗?使用拉威尔的
str\u contains
而不是据我所知
str\u contains
甚至可以使用一个针阵列,因此你可以将其缩短为
return str\u contains($card->text,$order)
@JosephSilber:你太棒了。@JosephSilber:有没有办法在按颜色排序之前也按字符串长度排序?据我所知,
str\u contains
甚至需要一组针,所以你可以将其缩短为
return str\u contains($card->text,$order)
@JosephSilber:你太棒了。@JosephSilber:有没有办法在按颜色排序之前也按字符串长度排序?据我所知,
str\u contains
甚至需要一组针,所以你可以将其缩短为
return str\u contains($card->text,$order)
@JosephSilber:你太棒了。@JosephSilber:有没有办法在按颜色排序之前也按字符串长度排序?据我所知,
str\u contains
甚至需要一组针,所以你可以将其缩短为
return str\u contains($card->text,$order)
@JosephSilber:你太棒了。@JosephSilber:在按颜色排序之前,有没有办法也按字符串长度排序?
$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();