Добавьте Uri param в точном порядке PHP - PullRequest
0 голосов
/ 26 февраля 2020

Я хотел бы спросить, как отсортировать / добавить параметр URI в точном порядке, чтобы избежать дублирования адресов с одинаковым запросом. Для уточнения я сортирую бренды товаров.

Пример:

https://www.example.me/page?b:0=foo&b:2=bar

Когда пользователь выберет другой параметр, он будет выглядеть так:

https://www.example.me/page?b:0=foo&b:2=bar&b:1=moe

Но Я хочу точно такую ​​же позицию независимо от того, как пользователь выберет параметр, например:

https://www.example.me/page?b:0=foo&b:1=moe&b:2=bar

Сначала я собираю данные из mysql в массив, затем массив сортируется ksort (), но сортируется только значения в нем не то, как ссылки генерируются.

 $actual_link = "https://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
 $delim =  (strpos($_SERVER['REQUEST_URI'], "?")) ? "&" : "?";

 while ($line = mysqli_fetch_array($stmt)) {

                $links[$x]['name']      = $line['brand_name'];

                if (strpos($actual_link, "b:".$x."=".$line['brand_tag'])) {
                    // this param is checked and exists in URL

                    $new_actual_link = str_replace('&', '?', preg_replace('#[&?]b:'.$x.'=[^&]*#', null, $actual_link));

                    $links[$x]['checked']   = true;
                    $links[$x]['link']      = $new_actual_link;
                }
                else {
                    // this param is not chosen, not exists in URL
                    $links[$x]['link'] = $actual_link.$delim."b:".$x."=".$line['brand_tag'];
                }
                $x++;
            }

            ksort($links);
            foreach ($links as $link) {...}
...