2014-11-24 3 views
6

POST 변수가 설정되었는지 여부를 확인하는 가장 효율적인 방법은 무엇입니까?변수가 설정되어 있는지 확인하십시오.

예를 들면, 나는 그들이이 설정되어있는 경우 내가 2 페이지에 데이터를 저장하고 싶습니다 페이지 1에서 10 개 변수를 수집하고 있습니다. 그렇지 않은 경우 '을 사용할 수 없습니다.'으로 지정하고 싶습니다.

저는 현재 if !empty을 사용하고 있습니다. 그러나 더 쉽고/더 효율적인 방법이 있어야 할 것 같습니다. 저는 PHP에 대해 매우 익숙해 져서 조언이 만족 스럽습니다.

예제 코드;

if (!empty($_POST["book"])) { 
    $book= $_POST['book'];  
}else{ 
    $book= 'not available'; 
} 

if (!empty($_POST["author"])) { 
    $author = $_POST['author'];  
}else{ 
    $author= 'not available'; 
} 

if (!empty($_POST["subtitle"])) { 
    $subtitle= $_POST['subtitle']; 
}else{ 
    $subtitle= 'not available'; 
} 

etc... 
etc... 
etc... 
+0

isset 기능을 알고 있습니까? 그러나 동시에 변수를 설정하고 비울 수 있다는 점에 유의하십시오. $ a = ""는 비어 있고 – Serpes

+0

@Serpes를 설정합니다. 그렇지만 동일한 원칙은 있습니까? –

+1

그들은 전에 내가 말한 것과 다른 결과를 준다. – Serpes

답변

9

루프 및 변수 변수를 사용하십시오.

$fields = array('author', 'book', 'subtitle', ....); 
foreach($fields as $field) { 
    if (isset($_POST[$field])) { 
     $$field = $_POST[$field]; // variable variable - ugly, but gets the job done 
    } else { 
     $$field = 'not available'; 
    } 
} 
+0

좋은 반복이지만'isset! ==! empty' –

+0

당신은'$ fields' 배열을 가지고 있기 때문에 루프를 예상되는 항목으로 제한함으로써 잘못된 요청으로 인한 잠재적 인 문제를 피할 수 있습니다. +1 – TecBrat

+1

네,하지만 OP는 "비어 있지"않은 "SET"라고 말했습니다. empty()는 어쨌든 moronic 함수입니다. empty (0) true - 인벤토리/돈/숫자를 다루는 모든 코드를 거짓 네거티브에 취약하게 만듭니다. 대신 "is_castable_to_false()"라고 불러야합니다. –

0

는 일반적으로 나는이 도우미 함수를 사용

function defa($array, $key, $default){ 
    if(isset($array[$key])){ 
     return $array[$key]; 
    }else{ 
     return $default; 
    } 
} 

사용법 :

$book = defa($_POST, 'book', 'Not available'); 

또는, 당신은 단지 $ _POST 배열을 사용하는 경우 단순화 할 수 있습니다

function post_defa($key, $default){ 
    if(isset($_POST[$key])){ 
     return $_POST[$key]; 
    }else{ 
     return $default; 
    } 
} 

사용법 :

$book = post_defa('book', 'Not available'); 
관련 문제