Квадратные скобки в URL

123 4
SeVlad
На сайте с 03.11.2008
Offline
1609
#11
LEOnidUKG #:
PHP умеет напрямую в код такой массив считывать.

Ну распарсить GET не проблема - это понятно.

Но чтобы принять эту конструкцию за массив.. Хм... Не знал, надо будет посмотреть на досуге.

Но даже если это и так, то всё равно конструкция мне кажется кривой. Значение-то одно на 3 переменных, и из твоего вывода видно, что оно для третьего, а первые два - неопределённы массивы.

Делаю хорошие сайты хорошим людям. Предпочтение коммерческим направлениям. Связь со мной через http://wp.me/P3YHjQ-3.
LEOnidUKG
На сайте с 25.11.2006
Offline
1762
#12
SeVlad #:

Ну распарить GET не проблема - это понятно.

Но чтобы принять эту конструкцию за массив.. Хм... Не знал, надо будет посмотреть на досуге.

Но даже если это и так, то всё равно конструкция мне кажется кривой. Значение-то одно на 3 переменных, и из твоего вывода видно, что оно для третьего, а первые два - неопределённы массивы.

Странно я думал все знают об таком. Возможно я работаю с больших количеством самописных и всякого уже навидался.

Я не знаю конечно код, но могу предположить, что есть некий $filter_base=array в котором есть ВСЕ фильтры, в многомерном формате. Далее он сравнивается с GET массивом и на основе этого выводятся данные. Тем самым идёт сохранения целостности данных при сопоставлении массивов. И чтобы их сравнивать, массивы, надо сохранять общую структуру.

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/
W1
На сайте с 22.01.2021
Offline
306
#13
SeVlad #:
Но чтобы принять эту конструкцию за массив

Ну если в форме инпуты имеют вид

<input name="filter[selected][16][0]">

то результат отправки будет именно такой. Обычное дело же.

Мой форум - https://webinfo.guru –Там я всегда на связи
SeVlad
На сайте с 03.11.2008
Offline
1609
#14
webinfo #:
результат отправки будет именно такой. Обычное дело же.

Ну не знаю насколько обычное - в стандарте url нет же квадратных скобок (и на кой так именовать элементы форм - я могу только догадываться).

А я да, не знал этого. Мне в целом не так много приходилось общаться с многомерными массивами, но вообще никогда через get с ними не работал и нигде такого не встречал.

W1
На сайте с 22.01.2021
Offline
306
#15
SeVlad #:
на кой так именовать элементы форм - я могу только догадываться

Я думаю, без труда догадаешься:

<form action="https://site.com">
<label>red<input type="checkbox" name="color[0]"></label>
<label>green<input type="checkbox" name="color[1]"></label>
<label>blue<input type="checkbox" name="color[2]"></label>
<label>black<input type="checkbox" name="color[3]"></label>
<input type="submit" value="Go">
</form>
SeVlad
На сайте с 03.11.2008
Offline
1609
#16
webinfo #:
Я думаю, без труда догадаешься:

Неа. Я вижу это бредом (ну и тут не многомерка).

Предпочитаю понятную схему:

<form action="https://site.com">
<label>red<input type="checkbox" name="red"></label>
<label>green<input type="checkbox" name="green"></label>
<label>blue<input type="checkbox" name="blue"></label>
<label>black<input type="checkbox" name="black"></label>
<input type="submit" value="Go">
</form>



Единственное где могу представить - в какой-то генерёнке.

LEOnidUKG
На сайте с 25.11.2006
Offline
1762
#17
webinfo #:

Я думаю, без труда догадаешься:

Не правильный пример.

Надо вот так:

<form action="https://site.com">
<label>red<input type="checkbox" name="color[]" value="red"></label>
<label>green<input type="checkbox" name="color[]" value="green"></label>
<label>blue<input type="checkbox" name="color[]" value="blue"></label>
<label>black<input type="checkbox" name="color[]" value="black"></label>
<input type="submit" value="Go">
</form>

Считывается массив color и идёт с ним работа. Это нужно когда нет явного количества элементов и они создаются динамически. Создавать под каждый вариант отдельную переменную, уж извольте. 

W1
На сайте с 22.01.2021
Offline
306
#18
SeVlad #:
Я вижу это бредом (ну и тут не многомерка).

Насчёт многомерки - это к теме о квадратных скобках не имеет значения, поэтому простейший случай. Многомерный массив получится при вложенных категориях, типа одежда->брюки->размер.
Бредом это только ты видишь, это часто бывает удобно, правда я на практике практически не встречал вложенность больше, чем name[0][0].

В твоём примере не видно, что это фильтр именно по цвету - а реально удобнее, когда на обработчик данных приходит поле, из названия которого видно, что обрабатываем. То есть в моём примере мы делаем поиск по цвету, заложив в обработчик поиск по "color", и значение поля может быть любым, добавляемым по необходимости. В твоём же примере в обработчик надо передавать закрытый список значений цвета.

Другое дело, что обычно, если такой многомерный фильтр нужно вывести в адресную строку, то лучше делать его обработку, заменяя всякие спецсимволы дефисами или подчёркиваниями. Если программист не ленивый.

SeVlad
На сайте с 03.11.2008
Offline
1609
#19
webinfo #:
В твоём примере не видно, что это фильтр именно по цвету

В реальном коде всё видно и понятно.

webinfo #:
когда на обработчик данных приходит поле, из названия которого видно, что обрабатываем.

Не поверю что цвет кто-то может обрабатывать как цену или материал...

В обработчик всегда будет браться только то что нужно. Ну и если кто-то сильно волнуется о совпадениях имен переменных можно использовать именования типа "сolor_red". (Я напр. давно привык именовать переменные уникальными именами)

W1
На сайте с 22.01.2021
Offline
306
#20
SeVlad #:
Я напр. давно привык именовать переменные уникальными именами

Ну на любителя. Кто-то привык постоянно мудрить с уникальными именами, а кто-то привык писать универсальный код и не заморачиваться с тем, кому какая блажь с серо-буро-малиновым цветом в голову придёт.

123 4

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий