добавить параметры URL в переменную $ _GET с разделением запятых - PullRequest
1 голос
/ 13 марта 2019

Это моя функция, я просто хочу вывести ссылку следующим образом:

www.example.com/new?cat=22,23,27

Если значение категории уже существует, я хочу удалить его. Если он еще не существует, я хочу добавить его.

Это моя функция:

function setorunset($value) {
    if(isset($_GET['cat'])) { //wenn schon eine categorie da ist
        if(strpos($value,$_GET['cat']) === false ) { 
            $_GET['cat'] .= ",".$value; }
        else {
            str_replace(",".$value, ",", $_GET['cat']);
        }
        echo http_build_query($_GET);   
    }
    else {
        echo http_build_query($_GET).'&cat='.$value;
    }
}

Я просто не могу найти ошибку, почему это не должно работать: Я вызываю эту функцию с помощью: setorunset (22);

Кто-нибудь находит ошибку?

1 Ответ

0 голосов
/ 13 марта 2019

Не используйте strpos() для этого. Если у вас есть cat=101,11 и вы звоните setorunset(10), это будет соответствовать 10 в 101.

Вместо этого используйте explode() для создания массива из значения, обновите массив, а затем используйте implode() для создания нового значения.

function setorunset($value) {
    if(isset($_GET['cat'])) { //wenn schon eine categorie da ist
        $cat = explode(',', $_GET['cat']);
        $pos = array_search($value, $cat);
        if ($pos === false) {
            $cat[] = $value;
        } else {
            unset($cat[$pos]);
        }
        $_GET['cat'] = implode(',', $cat);
    }
    else {
        $_GET['cat'] = $value;
    }
    echo http_build_query($_GET);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...