我传递了太多参数

时间:2014-05-17 13:54:33

标签: php function parameters

我在函数中传递了很多参数

我想知道我的工作是否错误,是否可以将所有这些变量放入数组并调用数组:

这是我的函数参数:

function addjo($logo, $job_category, $job_name, $status, $localization, $job_type, $contract_type, $description)

我的代码识别所有变量。

  if (isset($_POST['add_jo'])){

         $job_category  =$_POST['job_category'];
         $description  = $_POST['description'];
         $job_name  = $_POST['job_name'];
         $logo  = $_POST['logo'];    
         $status  = $_POST['status'];
         $localization  = $_POST['localization'];
         $job_type  = $_POST['job_type'];
         $contract_type  = $_POST['contract_type'];

         addjo($logo, $job_category, $job_name, $status, $localization, $job_type, $contract_type, $description);

         }else{


         $logo = NULL;
         $job_category = NULL;
         $job_name = NULL;
         $status = NULL;
         $localization = NULL;
         $description = NULL;
         $job_type = NULL;
         $contract_type = NULL;
         $check1 = NULL;
         $check2 = NULL;

         }

是否可以做这样的事情?

if(isset($_POST['mybutton'])){

array[](
$var1 = $_POST['var1'];
$var2 = $_POST['var2'];
);

function(callarrayhere);

else{

$var1 = null;
$var2 = null;

}

感谢。

3 个答案:

答案 0 :(得分:1)

由于$_POST已经是一个数组,所以只需使用它:

addjob($_POST);

addjob

function addjob($input) {
    // verify that array items are present and correct.
}

将数组的值导出到单个变量不仅浪费时间和内存,而且还会使您的代码更难阅读(这些变量来自何处?它们来自同一源数组并不明显)

答案 1 :(得分:0)

是的,可以将数组作为函数的参数。你的语法不是很正确。这样就可以了:

function addjo($params){
    echo $params['logo'];
    echo $params['job_category'];
    echo $params['job_name'];
}

用法示例:

$arr = array(
    'logo' => $logo,
    'job_category' => $job_category,
    'job_name' => $job_name
);

addjo($arr);

您也可以为每个数组元素设置默认参数,或者使它们成为可选参数。 See this answer了解如何做到这一点。

答案 2 :(得分:0)

当然可能:

 if (isset($_POST['add_jo'])){
         $a = array();   
         $a['job_category']  =$_POST['job_category'];
         $a['description']  = $_POST['description'];
         // and so on   
         $a['contract_type']  = $_POST['contract_type'];    
         addjo($a);

    } 
    else
    {
          $a['job_category'] = null;
         // and  so on    
    }

在函数addjo中,您可以通过以下方式显示所有值:

function addjo($a) {
   foreach ($a as $k => $v) {
      echo $k.' '.$v."<br />"
   }

   // or
   echo $a['job_category'];
}