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();