使用 PHP 按自定义顺序对数组进行排序
Sort array in custom order using PHP
我想按以下顺序对数组进行排序:
$sorted_array = ["diamond", "platinum", "gold", "silver", "bronze", "standard", "branding"];
原始数组的顺序可能不同,如下所示:
$data = ["platinum", "gold", "silver", "bronze", "standard", "branding", "diamond"];
但我一直想要上面的 $sorted_array 值。如果 $data 中不存在任何值,那么它将取代 other 的位置。例如:如果钻石不在数组中,那么第一个位置将是铂金。
我会使用以正确顺序包含所有值的数组,然后过滤掉不在 $data 数组中的元素:
$sortOrder = [ 'diamond', 'platinum', 'gold', 'silver', 'bronze', 'standard', 'branding' ];
$data = [ 'platinum', 'gold', 'silver', 'bronze', 'standard', 'branding', 'diamond' ];
$result = array_filter($sortOrder, fn($value) => in_array($value, $data));
我想按以下顺序对数组进行排序:
$sorted_array = ["diamond", "platinum", "gold", "silver", "bronze", "standard", "branding"];
原始数组的顺序可能不同,如下所示:
$data = ["platinum", "gold", "silver", "bronze", "standard", "branding", "diamond"];
但我一直想要上面的 $sorted_array 值。如果 $data 中不存在任何值,那么它将取代 other 的位置。例如:如果钻石不在数组中,那么第一个位置将是铂金。
我会使用以正确顺序包含所有值的数组,然后过滤掉不在 $data 数组中的元素:
$sortOrder = [ 'diamond', 'platinum', 'gold', 'silver', 'bronze', 'standard', 'branding' ];
$data = [ 'platinum', 'gold', 'silver', 'bronze', 'standard', 'branding', 'diamond' ];
$result = array_filter($sortOrder, fn($value) => in_array($value, $data));