2014-05-17 4 views
2

너무 많은 매개 변수를 전달하고있어 경우에 그 무슨 내가 뭐하는 거지와 가능한 경우 배열에 모든 변수를 넣어 및내가</p> <p>내가 알고 싶은 나는 함수에서 매개 변수를 많이 통과하고있어

다음

내 함수 매개 변수 :

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; 

} 

감사합니다.

+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. – bwoebi

답변

0

물론 그것은 가능 :

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

    // or 
    echo $a['job_category']; 
} 
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. $_POST 이후

1

이미 배열, 그냥 사용

addjob($_POST); 

그리고 addjob하여 : 개별 변수로 배열의 값을 내보내기

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

시간 및 메모리의 낭비 일뿐만 아니라, 하지만 코드를 읽기가 더 어렵게 만듭니다 (이 변수들은 어디에서 왔는가? 동일한 소스 배열에서 온 것이 확실하지 않음)

+0

POST에서 데이터를 유효화/위생 처리하여 사용자가 입력 한 것임을 분명히 알 수없는 함수에서 사용하는 것이 좋습니다. –

+0

@MikeBrant Fair하지만 충분히 개인적으로는 데이터를 원하는대로 제어 할 수 있다는 것을 알게되면 곧 데이터의 유효성을 검사하는 것을 선호합니다. 동일한 입력은 데이터의 위치에 따라 여러 가지 방법으로 유효성이 검사되지만, 'addjob' 그럼 정확히 무엇이 필요한지 압니다. –

관련 문제