Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: передавать параметры в функцию
 
 автор: Q012   (21.01.2012 в 18:11)   письмо автору
 
 

Здравствуйте. Я хочу понять и научиться передавать параметры в функцию в зависимости от выбора пользователя того или иного значения.
Вот у меня есть несколько списков типа <select>. После нажатия на кнопку отправить, в переменные заносятся выбранные значения, из <select> типа
    if ($_POST ["ok"]=="ok") {
    $q = $_POST['book'];
    $ott = $_POST['ot'];
    $usr = $_POST['us']; }


Дополнительно проверяется ещё одна выборка
f (isset($_POST['exp'])) {
$exper = $_POST['exp'];
if ($exper=="1") {
        function my ($k1=1.50) {
                global $q,$ott,$usr;
if ($q=="первое значение из селект") {$k2=1.00;}
elseif ($q=="второе значение из селеки") {$k2=1.14;}              
 
if ($ott=="первое значение из селект") {$k3=1.12;}
elseif ($ott=="второе значение из селект") {$k3=1.84;}              
return $k1*$k2*$k3;
        }
} elseif ($exper=="2") {
        function my ($k1=1.35) {
               
                return $k1*$k2*$k3;
                }

Функция большая и что бы не писать всё заново, я хотел в зависимости от $exper менять параметр function my ($k1) или другой параметр если нужно. Но вот в таком примере return мне возвращает 0. А если убрать $k1 из return то перемножает и возвращает как надо. $k1 получается 0 ? Я думал я ей тут даю значение function my ($k1=...)..?

  Ответить  
 
 автор: Киналь   (21.01.2012 в 18:25)   письмо автору
 
   для: Q012   (21.01.2012 в 18:11)
 

Выведите на экран значение переменной $exper.

  Ответить  
 
 автор: Q012   (21.01.2012 в 21:40)   письмо автору
 
   для: Киналь   (21.01.2012 в 18:25)
 

переменная $exper выводит мне на экран 1 или 2 в зависимости от того что выбрал пользователь в селект,.
и переменные $q,$ott,$usr; перемножаются в зависимости от выбора в селект, а вот $k1 при умножении на них в сумме даёт 0.

  Ответить  
 
 автор: Киналь   (21.01.2012 в 21:58)   письмо автору
 
   для: Q012   (21.01.2012 в 21:40)
 

Вот этот код получен из вашего заменой входных данных на заглушки; он работает и выводит ненулевые результаты. Судя по всему, у вас что-то не так со входными данными.


<?php
$exper 
"1"
if (
$exper=="1"

        function 
my ($k1=1.50)
    { 
                    global 
$q,$ott,$usr
        
$q "2"$ott "3";

        if (
$q== "2") {$k2=1.00;} 
        elseif (
$q=="второе значение из селеки") {$k2=1.14;}               
  
        if (
$ott=="3") {$k3=1.12;}     
        elseif (
$ott=="второе значение из селект") {$k3=1.84;}               

        echo 
'k1: '.$k1.'; k2: '.$k2.'; k3: '.$k3.'<p>';
                
        return 
$k1*$k2*$k3
        } 
}
elseif (
$exper=="2")

               function 
my ($k1=1.35)
        {
            return 
$k1*$k2*$k3;
        }
}

echo 
'Результат функции my(): '.my();

?>


PS Очень советую аккуратно и тщательно форматировать код. Наглядность повышается, отладка упрощается.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования