Voici une méthode qui permet de trier un tableau sur la clé des enfants.
1er exemple de tableau avant tri :
91 => array:6 [ 0 => array:3 [ "id" => 26154 "filter_type" => 2 "value" => "Conique" ] 1 => array:3 [ "id" => 26112 "filter_type" => 2 "value" => "Boule" ] 2 => array:3 [ "id" => 26113 "filter_type" => 2 "value" => "Poire" ] 3 => array:3 [ "id" => 26214 "filter_type" => 2 "value" => "Gilson" ] 4 => array:3 [ "id" => 26298 "filter_type" => 2 "value" => "Cylindrique" ] 5 => array:3 [ "id" => 25939 "filter_type" => 2 "value" => "De coulée" ] ]
Le code suivant va trier le tableau sur la clé "value"
$formattedAttributes = array_map(function($attributes) { $values = array_column($attributes, 'value'); array_multisort($values, SORT_ASC, SORT_STRING, $attributes); return ($attributes); }, $formattedAttributes);
Voici le résultat :
91 => array:6 [ 0 => array:3 [ "id" => 26112 "filter_type" => 2 "value" => "Boule" ] 1 => array:3 [ "id" => 26154 "filter_type" => 2 "value" => "Conique" ] 2 => array:3 [ "id" => 26298 "filter_type" => 2 "value" => "Cylindrique" ] 3 => array:3 [ "id" => 25939 "filter_type" => 2 "value" => "De coulée" ] 4 => array:3 [ "id" => 26214 "filter_type" => 2 "value" => "Gilson" ] 5 => array:3 [ "id" => 26113 "filter_type" => 2 "value" => "Poire" ] ]
2ème exemple :
array:13 [▼ 2 => array:2 [▼ "filter" => App\Models\Filter {#3431 ▶} "values" => array:6 [▼ 0 => array:2 [▼ "value" => "Flacon" "count" => 1209 ] 1 => array:2 [▼ "value" => "Pot" "count" => 126 ] 2 => array:2 [▼ "value" => "Bidon" "count" => 94 ] 3 => array:2 [▼ "value" => "Fût" "count" => 13 ] 4 => array:2 [▼ "value" => "Bonbonne" "count" => 19 ] 5 => array:2 [▼ "value" => "Jerrycan" "count" => 11 ] ] ]
Le code suivant va trier le tableau sur la clé "value"
foreach ($listFilters as $key => $datum) { usort($datum['values'], static function ($a, $b) { return strcmp($a['value'], $b['value']); }); $listFilters[$key]['values'] = $datum['values']; }
Voici le résultat :
array:13 [▼ 2 => array:2 [▼ "filter" => App\Models\Filter {#3431 ▶} "values" => array:6 [▼ 0 => array:2 [▼ "value" => "Bidon" "count" => 94 ] 1 => array:2 [▼ "value" => "Bonbonne" "count" => 19 ] 2 => array:2 [▼ "value" => "Flacon" "count" => 1209 ] 3 => array:2 [▼ "value" => "Fût" "count" => 13 ] 4 => array:2 [▼ "value" => "Jerrycan" "count" => 11 ] 5 => array:2 [▼ "value" => "Pot" "count" => 126 ] ] ]
Cours rédigé par Vincent, publié le 05/07/2021