まず色で並べ替えてから、並べ替えることを試みています。Laravelの複数の基準に基づいてコレクションを並べ替える
おそらく二重のforeachループが答えではないかもしれないと思いますか?
以下は私が今までに持っているものです。
private $color_order = [
'white',
'green',
'purple',
'blue',
''
];
private $type_order = [
'diamond',
'square',
'circle'
];
private function sortCards($cards, $color_order, $type_order) {
$collection = collect($cards);
return $collection->sortBy(function($card) use ($color_order, $type_order) {
foreach ($type_order as $index => $type) {
foreach ($color_order as $index => $color) {
if ($card->card_colors == $color && str_contains($card->card_type, $type)) {
return $index;
}
}
}
})->values();
}
$カードはどのような価値がありますか? –