Неопределённое количество переменных

jenia

Новичок
Неопределённое количество переменных

Имеется функция, которая принимает неизвесное количество переменных (2, 3 или 4). В функции я задал переменные по умолчанию, т.е.: function func ($a = 1, $b = 2...){}. Но вот проблема, функция запускается конструкцией switch-case:
switch ($_GET['func']) {
case 'r_poisk':
r_poisk($_POST['grup'], $_POST['podgr'], $_GET['gr']);
break;
...
Если в этой конструкции задавать значения по умолчанию, то эти значения так и остаются, и не заменяются приходящими значениями. Функции func_get_args(), func_num_args() и func_get_arg() как я понимаю здесь работать не будут. Как мне быть? Может проверять на наличие каждую из переменных с которыми я запускаю функцию? Или может сделать проще: поставить "@" перед вызовом функции и не видеть печатающихся ошибок? Ведь всё работает корректно.
 

Frol

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

jenia

Новичок
Когда я пробую сделать так:
function r_poisk ($grup = 0, $podgr = 0, $gr = 0){
...
}

switch ($_GET['func']) {
case 'r_poisk':
r_poisk($_POST['grup'] = 0, $_POST['podgr'] = 0, $_GET['gr'] = 0);
break;
...
То даже если переменные $_POST['grup'], $_POST['podgr'] и $_GET['gr'] переданные скрипту были отличны от нуля, то при работе с ними в функции r_poisk() обнаруживается, что они равны нулю - как по умолчанию.
 

Frol

Новичок
PHP:
r_poisk($_POST['grup'] = 0, $_POST['podgr'] = 0, $_GET['gr'] = 0);
интересно, что делает эта строчка?

что означает = 0 ?
 

jenia

Новичок
Хорошо, я понял. Указанная строчка бесмысленна. Но как мне решить мою проблему?
 

jenia

Новичок
Frol
0 - просто значение от фонаря, чтобы php не выдавал ошибку.
 

Frol

Новичок
епть.
это надо же было приплести функции, switch и func_*.
 

jenia

Новичок
Frol
Ну объясни хотя бы что не правильно?

-~{}~ 03.06.05 04:10:

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

SelenIT

IT-лунатик :)
jenia
У тебя параметр функции - выражение "присвоить опред. переменной значение 0". Чему равно значение этого выражения (вне зависимости от того, что раньше было в этой переменной), надеюсь, догадаешься? ;)
 

confguru

ExAdmin
Команда форума
jenia
Не присваивай всегда 0 переменным
$_POST['grup'] , $_POST['podgr'] , $_GET['gr']
при вызове функции

Значения по умолчанию ты уже задал при декларировании
функции.
 

jenia

Новичок
Я не знаю какое количество переменных будет передаватся в функцию. Соответственно $_POST['grup'] , $_POST['podgr'] , $_GET['gr'] не всегда будут существовать и при запуске функции:
r_poisk($_POST['grup'] = 0, $_POST['podgr'] = 0, $_GET['gr'] = 0);
php будет выдавать ошибку подобно этой:
Notice: Undefined index: gruppa in d:\www\sites\mis\html\fetida\r_poisk.php on line 791
. Как решить эту проблему?
 

Фанат

oncle terrible
Команда форума
ну и бредовый топик...


jenia у тебя функция поиска обрабатывает содержимое массива $_POST?
Тогда в ней ВООБЩЕ не должно быть параметров.
вызываешь без параметров, а внутри разбираешь $_POST

кстати, поиск делается методом GET, а не POST
 

jenia

Новичок
Фанат
Я уже использую то что ты написал. Просто я не знал правильно ли такое применение.

-~{}~ 03.06.05 13:30:

Почему поиск делается методом GET? Неужели из формы поиска я не могу передать значения методом POST?
 

Разгильдяй

Новичок
Автор оригинала: jenia

Почему поиск делается методом GET? Неужели из формы поиска я не могу передать значения методом POST?
А ссылка на результаты поиска? или если потребуется воспользоваться кнопкой Назад.
 

Фанат

oncle terrible
Команда форума
можешь, то это будет неправильно. и неудобно тебе и пользователям сайта.

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

jenia

Новичок
Почему поиск делается методом GET я понял. Спасибо.
Фанат
Скажи пожалуйста, разбор $_POST или $_GET внутри функции, а вызов самой функции без параметров это нормально, или есть более лучшие варианты? Только ответь конкретно (да или нет), а то я тебя не совсем понял.
 
Сверху