Создание ссылок на строки запроса - PullRequest
1 голос
/ 19 октября 2010

Я создаю раздел фильтров для своей страницы поиска, и мне было интересно, как лучше всего выполнить строки запроса.Моя проблема в том, что эти ссылки очень похожи на флажки, поэтому некоторые, все или ни один могут быть включены.Мне нужно было бы перебрать каждую из примерно 30 ссылок, удалив или добавив значение этой конкретной ссылки в зависимости от ее состояния.

Моя первая проблема:

Должен ли я передавать массивы как

colors=red,blue,green   //explode?

или

colors[]=red&colors[]=blue&colors[]=green   //parse_str?

Какой самый быстрый / лучший способ удалить определенное значение определенного массива, когда я перебираю каждую ссылку?Я полагаю, что было бы немного сложнее использовать второй метод, который я опубликовал выше, да?

РЕДАКТИРОВАТЬ2 - Что вы думаете об этом?

Я наткнулся на онлайн-учебник и придумал следующее:

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 ссылок?Спасибо!

1 Ответ

3 голосов
/ 19 октября 2010
 colors[]=red&colors[]=blue&colors[]=green 

Будет способом, которым форма будет отправлять данные (когда method = "get"). И вы можете получить к нему доступ через $ _GET ['colors'], который является нативным и, возможно, самым быстрым способом.

РЕДАКТИРОВАТЬ: чтобы получить эту строку через http_build_query, просто заполните их цветом массива

$data = array('colors' => array('green','red','blue'));
echo http_build_query($data); // colors[0]=green&colors[1]=red&colors[2]=blue
...