Здравствуйте! У меня на страницу приходит массив GET. Я его проверяю на наличие ключа: if (!empty($_GET['data'])) {... и в дальнейшем использую. Скажите имеет ли смысл после проверки присвоить переменной эти данные: $date = $_GET['data']; и далее в коде использовать $date или можно далее в коде использовать $_GET['data'] ? Ключей же может быть не мало и при каждом использовании данных нужно будет выбирать необходимый ключ из массива, наверное, это как то повлияет на производительность? И вообще влияет ли на производительность выбор данных из массива по ключу? Подскажите, как правильно?
В данном случае нужно переживать не за производительность, а за удобство чтения кода и безопасность. У вас входные данные должны пройти определенные фильтры перед тем, как попадут в БД. Лучше использовать переменные или массивы переменных и там хранить "почищенные" входные данные.
Это я в курсе, ничего у меня в БД не идет. Какой вариант правильный не принимая во внимание вопрос безопасности!? И почему? Мне кажется загоняем в переменную, т.к. если оставим массив, то при каждом обращении к массиву будет весь массив со всеми данными загружаться в память, затем находиться нужный ключ ... и все это из-за одного ключа. Верно или нет?
Ну не идет sql в БД, так пойдет XSS на фронтенд. Ну ок, ваше дело. В любом случае данные как-то обрабатываются, проверяются на размер, тип, убираются пробелы и т.д. Каждый раз все это проделывать, используя $_GET['data'] не рационально. Один раз обработали и используйте везде из того же массива.
Не стоит тут вопрос чистые данные или нет, не надо ничего проверять. Все с данными ОК. И все таки какой вариант использования будет быстрее для исполнения на сервере? Ну может логичнее и рациональнее, а самое главное почему!?
Сколько миллионов запросов у тебя будет идти в секунду? Если один запрос в час/минуту, то в чем вообще проблема??
--- Добавлено --- К примеру чего это говнокод PHP: $name = $db->real_escape_string(strip_tags($_GET['name'])); --- Добавлено --- Если раз двадцать вызвать переменную надо, код быстрее писать и меньше
вопсчем слушайте дядьку есть надо 5 раз обратиться к $_GET['data'], то так и делай, разница от того что ты присвоишь это значение другой переменной и будешь юзать, даже на тысячи обращений ты не заметишь (если конечно в data не мегабайты инфы) Если же инфа к этом элементе массива юзается +100500 раз, да, обращение к переменной будет быстрее нежели к элементу массива Но опять же, перфекционизм в коде я сам люблю (да да, юзаю sizeof вместо count) но все в меру должно быть, и пока нет нагрузки, переживать не о чем, а если будет, то это далеко не самое проблематичное место )
Будет загружать в память откуда? Из параллельной вселенной? Все уже в памяти загружено. И нужный ключ не "находится". Массивы в пхп это, конечно, не чистые сишные массивы с прямой адресацией, но и не списки, чтоб что-то там искать. Это хэш-мапы, причем довольно быстрые. Не парься. Опасное дело. Погляди год этой инфы. А то есть статьи в стиле "название переменной должно быть не больше 6 символов, иначе интерпретатор вешается и все тормозит". Ну а вообще: PHP: $data = $_GET['data'] ?? null; //[], '', false, 0, что по смыслу подходит больше Заменяет кучу кода, проверок и тд. А еще лучше - пользоваться array_input-фильтрами, чтобы из гет- и пост-массивов вытащить только то, что нужно. Использовать $_GET['data'] в коде я б не рекомендовал тупо вот с точки зрения поддерживаемости кода. Сменится завтра название параметра и понеслась - править его везде, где он встречается. В случае же с фильтрами или переприсвоением переменной, у нас есть только одна точка правки. А чем меньше точек правки, тем меньше вероятность ошибки. Тем больше гибкость и поддерживаемость решения. Тем меньше седых волос, слез и вероятности словить факап. А это вот гораздо важнее пары сэкономленных килобайт оперативы и чего-нибудь астрального из мира "мифы древних оптимизаторов".