Выбор сортировки массива

есть массив который сортируется по цене от наименьшего к большему и наоборот, подскажите пожалуйста, а как можно сделать переключатель из html, чтобы select'om выбирать - наименьшая, наибольшая цена ?

<? usort($array,function($a,$b){
$price_asc = $a['product']->price*100 - $b['product']->price*100;
$price_desc = $b['product']->price*100 - $a['product']->price*100; 

return $price_desc;   });?>

Ответы (1 шт):

Автор решения: teran

Для начала добавить самселект в форму (если у вас есть форма)

 <select name="order">
     <option value="asc">asc</option>
     <option value="desc">desc</option>
 </select>

и учесть этот параметр в пхп-коде: получить из формы, взять значение, или значение по умолчанию.

 $x = $_POST['order'];
 $orderValues = ['asc' => 1, 'desc' => -1];
 $order = $orderValues[$x] ?? 1;

потом учесть в сортировке

 usort($array, function($a, $b) use ($order){
        return $order*($a['product']->price - $b['product']->price);
     });
→ Ссылка