Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Функция, где переменная в переменной


Автор: neokortex 10.4.2008, 15:59
делаю одни и те же операции, решил уже написать функцию.
Функция проверяет наличие той или иной переменной, и создает еще одну с указанием результата проверки, у меня вот так 
Код

function post ($name_perem) {
                                                 if (!isset ($_POST['$name_perem'])) $$name_perem_status=false;
                                                 else $$name_perem_status=true;
                                                };
name_perem("email");

понятно что "$$name_perem_status" - это [censored33! Пожалуйста, соблюдайте элементарные правила приличия при общении на форуме] какое-то, которое я сам придумал, поэтому и не работает.
Может кто подсказать, как это "оформить"?
Т.е. по идее новая переменная должна принимать вид "$email_status=true". 

Автор: Canarat 10.4.2008, 16:14
Весь код - бред. Особенно 
Код

!isset ($_POST['$name_perem']

Это всегда вернет false для любых значения $name_perem. По понятным причинам.

А чтобы устанавливать переменные - использовать $_GLOBALS массив, если не терпится так.

Автор: Sannis 10.4.2008, 16:22
Код
${$name_perem.'status'}


Подписываюсь под словами выше. Не проще ли брать переменную из POST и не менять её название?

Автор: Feldmarschall 10.4.2008, 16:22
neokortex, для начала ответь на вопрос - а зачем тебе переменная с результатом проверки?

Автор: neokortex 10.4.2008, 17:05
ну например пользователь заполняет некую сложную форму, дабы исключить попытки вандализма, необходимо проверить почти каждое поле на наличие самого поля, на заполненность (или незаполненность), а также необходимо проверить содержание поля.
Ведь можно сохранить форму себе на комп, отредактировать стандартные html-евские "ограничения", и добавить в базу всякой дряни.
Но это все лирическое отступление.
так вот первый этап это наличие переменной.
Если отсутствует $_POST['name_perem'] необходимо выполнить одну операцию, если присутствует - другую, таких полей множество, надо проверить все и если будет замечена хоть одна ошибка, данные не будут обрабатываться далее, а будет выводится ошибка.
для этого нужна "переменная в переменной"

Автор: Feldmarschall 10.4.2008, 17:10
Вот именно - если хоть одна замечена, то скрипт перестанет выполняться.
Следовательно, какой смысл давать переменной отдельное имя? сделай одну переменную, $error, и её проверяй.
Переменные переменные при проверке формы нафиг не нужны.
В лучшем случае, тебе понадобится массив, где ключом будет имя поля, а значением - сообщение об ошибке.

по поводу проверки наличия - почитай про синтаксис массивов в документации, http://php.net/types.array

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)