У меня есть следующий код фильтра:
$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.
)
$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();
Других решений пока нет …