Как собрать массив с уникальными ключами?

Есть такой запрос


        $myArray = array();

        $filter_btn_arr = [];

        $filter_button = $dbpdo->prepare('SELECT *  FROM filter   
        GROUP BY filter_value DESC  ORDER BY ABS(filter_value)  ASC');
        $filter_button->execute();

        while ($row = $filter_button->fetch())
            $filter_btn_arr[] = $row;
        foreach ($filter_btn_arr as $row) { 
            $filter_id = $row['filter_id'];
            $filter_value = $row['filter_value'];
            $filter_type = $row['filter_type'];
            
            //тут заполняем массив $myArray
            array_push($myArray, array(
                'filter_type'   => $filter_type,
                'filter_id'     => $filter_id, 
                'filter_value'  => $filter_value
            ));
                        
        }

Вот, что получается, если вывести массив через var_dump (если кто-то из редакторов будет редактировать мой вопрос, то пожалуйста добавьте массив ниже в спойлер)

array(21) {
  [0]=>
  array(3) {
    ["filter_type"]=>
    string(5) "color"
    ["filter_id"]=>
    int(9)
    ["filter_value"]=>
    string(4) "Blue"
  }
  [1]=>
  array(3) {
    ["filter_type"]=>
    string(5) "color"
    ["filter_id"]=>
    int(1)
    ["filter_value"]=>
    string(5) "Black"
  }
  [2]=>
  array(3) {
    ["filter_type"]=>
    string(5) "color"
    ["filter_id"]=>
    int(2)
    ["filter_value"]=>
    string(3) "Red"
  }
  [3]=>
  array(3) {
    ["filter_type"]=>
    string(5) "color"
    ["filter_id"]=>
    int(3)
    ["filter_value"]=>
    string(4) "Gold"
  }
  [4]=>
  array(3) {
    ["filter_type"]=>
    string(5) "color"
    ["filter_id"]=>
    int(4)
    ["filter_value"]=>
    string(9) "Rose Gold"
  }
  [5]=>
  array(3) {
    ["filter_type"]=>
    string(4) "used"
    ["filter_id"]=>
    int(26)
    ["filter_value"]=>
    string(11) "işlənmiş"
  }
  [6]=>
  array(3) {
    ["filter_type"]=>
    string(5) "color"
    ["filter_id"]=>
    int(5)
    ["filter_value"]=>
    string(4) "Rose"
  }
  [7]=>
  array(3) {
    ["filter_type"]=>
    string(4) "used"
    ["filter_id"]=>
    int(27)
    ["filter_value"]=>
    string(4) "Yeni"
  }
  [8]=>
  array(3) {
    ["filter_type"]=>
    string(5) "color"
    ["filter_id"]=>
    int(6)
    ["filter_value"]=>
    string(6) "Yellow"
  }
  [9]=>
  array(3) {
    ["filter_type"]=>
    string(5) "color"
    ["filter_id"]=>
    int(7)
    ["filter_value"]=>
    string(4) "Pink"
  }
  [10]=>
  array(3) {
    ["filter_type"]=>
    string(5) "color"
    ["filter_id"]=>
    int(8)
    ["filter_value"]=>
    string(4) "Gray"
  }
  [11]=>
  array(3) {
    ["filter_type"]=>
    string(3) "ram"
    ["filter_id"]=>
    int(18)
    ["filter_value"]=>
    string(1) "1"
  }
  [12]=>
  array(3) {
    ["filter_type"]=>
    string(7) "storage"
    ["filter_id"]=>
    int(10)
    ["filter_value"]=>
    string(1) "2"
  }
  [13]=>
  array(3) {
    ["filter_type"]=>
    string(3) "ram"
    ["filter_id"]=>
    int(20)
    ["filter_value"]=>
    string(1) "3"
  }
  [14]=>
  array(3) {
    ["filter_type"]=>
    string(7) "storage"
    ["filter_id"]=>
    int(11)
    ["filter_value"]=>
    string(1) "4"
  }
  [15]=>
  array(3) {
    ["filter_type"]=>
    string(7) "storage"
    ["filter_id"]=>
    int(12)
    ["filter_value"]=>
    string(1) "8"
  }
  [16]=>
  array(3) {
    ["filter_type"]=>
    string(7) "storage"
    ["filter_id"]=>
    int(13)
    ["filter_value"]=>
    string(2) "16"
  }
  [17]=>
  array(3) {
    ["filter_type"]=>
    string(7) "storage"
    ["filter_id"]=>
    int(14)
    ["filter_value"]=>
    string(2) "32"
  }
  [18]=>
  array(3) {
    ["filter_type"]=>
    string(7) "storage"
    ["filter_id"]=>
    int(15)
    ["filter_value"]=>
    string(2) "64"
  }
  [19]=>
  array(3) {
    ["filter_type"]=>
    string(7) "storage"
    ["filter_id"]=>
    int(16)
    ["filter_value"]=>
    string(3) "128"
  }
  [20]=>
  array(3) {
    ["filter_type"]=>
    string(7) "storage"
    ["filter_id"]=>
    int(17)
    ["filter_value"]=>
    string(3) "512"
  }
}

Но мне нужно получить массив вида:

array(1) {
  [0]=>
  array(4) {
    ["color"]=>
    array(1) {
      ["data"]=>
      array(9) {
        [0]=>
        array(2) {
          ["id"]=>
          int(3)
          ["value"]=>
          string(4) "Gold"
        }
        [1]=>
        array(2) {
          ["id"]=>
          int(4)
          ["value"]=>
          string(9) "Rose Gold"
        }
        [2]=>
        array(2) {
          ["id"]=>
          int(5)
          ["value"]=>
          string(4) "Rose"
        }
        [3]=>
        array(2) {
          ["id"]=>
          int(6)
          ["value"]=>
          string(6) "Yellow"
        }
        [4]=>
        array(2) {
          ["id"]=>
          int(7)
          ["value"]=>
          string(4) "Pink"
        }
        [5]=>
        array(2) {
          ["id"]=>
          int(8)
          ["value"]=>
          string(4) "Gray"
        }
        [6]=>
        array(2) {
          ["id"]=>
          int(9)
          ["value"]=>
          string(4) "Blue"
        }
        [7]=>
        array(2) {
          ["id"]=>
          int(1)
          ["value"]=>
          string(5) "Black"
        }
        [8]=>
        array(2) {
          ["id"]=>
          int(2)
          ["value"]=>
          string(3) "Red"
        }
      }
    }
    ["storage"]=>
    array(1) {
      ["data"]=>
      array(8) {
        [0]=>
        array(2) {
          ["id"]=>
          int(10)
          ["value"]=>
          string(1) "2"
        }
        [1]=>
        array(2) {
          ["id"]=>
          int(11)
          ["value"]=>
          string(1) "4"
        }
        [2]=>
        array(2) {
          ["id"]=>
          int(12)
          ["value"]=>
          string(1) "8"
        }
        [3]=>
        array(2) {
          ["id"]=>
          int(13)
          ["value"]=>
          string(2) "16"
        }
        [4]=>
        array(2) {
          ["id"]=>
          int(14)
          ["value"]=>
          string(2) "32"
        }
        [5]=>
        array(2) {
          ["id"]=>
          int(15)
          ["value"]=>
          string(2) "64"
        }
        [6]=>
        array(2) {
          ["id"]=>
          int(16)
          ["value"]=>
          string(3) "128"
        }
        [7]=>
        array(2) {
          ["id"]=>
          int(17)
          ["value"]=>
          string(3) "512"
        }
      }
    }
    ["ram"]=>
    array(1) {
      ["data"]=>
      array(2) {
        [0]=>
        array(2) {
          ["id"]=>
          int(18)
          ["value"]=>
          string(1) "1"
        }
        [1]=>
        array(2) {
          ["id"]=>
          int(20)
          ["value"]=>
          string(1) "3"
        }
      }
    }
    ["used"]=>
    array(1) {
      ["data"]=>
      array(2) {
        [0]=>
        array(2) {
          ["id"]=>
          int(26)
          ["value"]=>
          string(11) "işlənmiş"
        }
        [1]=>
        array(2) {
          ["id"]=>
          int(27)
          ["value"]=>
          string(4) "Yeni"
        }
      }
    }
  }
}

Каким образом я это могу сделать ?

Буду благодарен за любую помощь


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