Я создаю раздел фильтров для своей страницы поиска, и мне было интересно, как лучше всего выполнять строки запроса. Моя проблема в том, что эти ссылки работают так же, как флажки, поэтому некоторые, все или ничто не может быть включено. Мне пришлось бы перебирать каждую из примерно 30 или около того ссылок, удаляя или добавляя значение конкретной ссылки в зависимости от ее состояния.Строка запроса строки запроса
Моя первая забота:
Должен ли я передавать массивы как
colors=red,blue,green //explode?
или
colors[]=red&colors[]=blue&colors[]=green //parse_str?
Какой самый быстрый/лучший способ удалить определенное значение определенного массива, как я петля через каждую ссылку? Я предполагаю, что это будет немного сложнее с использованием второго метода, который я опубликовал выше, да?
EDIT2 - Что вы об этом думаете?
Я побежал в учебник онлайн и придумал это:
function remove($filters = array(), $remove_key = NULL, $remove_val = NULL) { if($remove_key != NULL && array_key_exists($remove_key,$filters)) { if($remove_val != NULL && array_key_exists($remove_val,array_flip($filters[$remove_key]))) { $filters[$remove_key] = array_diff($filters[$remove_key],array($remove_val)); } else { unset($filters[$remove_key]); } } return http_build_query($filters); }
В настоящее время я могу передать $ remove_key удалить ключ и $ remove_val, чтобы удалить значение из ключа в массиве.
Что вы, ребята, думаете? Будет ли это слишком медленно для 30-50 ссылок? Благодаря!
Примечания в вашем втором примере вы не должны называть 'parse_str'; PHP будет заполнять '$ _GET ['colors']' массивом для вас. – meagar