2014-11-21 6 views
6

매개 변수가 설정되어 있고 숫자가 0 인 경우 변수를 GET 매개 변수로 설정하는 깨끗하고 세련된 방법을 원합니다. 어떤 다른 기본값) 설정되어 있지 않은 경우.php - filter_input - GET 키를 설정하지 않은 경우 기본값으로 설정

if (($get_id = filter_input(INPUT_GET, 'id', FILTER_VALIDATE_INT))) { 
    $opened_staff['id'] = $get_id; 
    // some database queries etc. 
} else { $opened_staff['id'] = 0; } 

내가 값이 숫자 null 또는없는 경우 0을 반환하는 콜백 함수를 사용하려고했으나 GET 매개 변수 'ID'가 설정되지 않은 경우, 콜백 원 :

는 지금은이 심지어 호출 될 필요가 없습니다. 단지 $get_id을 null로 설정합니다.

else 문을 포함하는 것은 그리 중요하지 않지만 단지 filter_input의 일부 기능을 놓칠 수 있다고 생각했습니다.

+0

(? 단순히 당신의 경우 문에서'$의 valid'를 반환하지 왜 이미이 경우에 유효한 값을 추출 했으므로 좀 더 명확한 설명 –

답변

14

filter_input 함수는 options 매개 변수를 허용합니다. 각 필터는 다른 옵션을 허용합니다. 예를 들어, FILTER_VALIDATE_INT 필터는 default, min_rangemax_range 옵션 as described here을 허용 할 수 있습니다.

$get_id = filter_input(INPUT_GET, 'id', FILTER_VALIDATE_INT, array("options" => array(
    "default" => 0, 
    "min_range" => 0 
))); 
var_dump($get_id); 

// $get_id = 0 when id is not present in query string, not an integer or negative 
// $get_id = <that integer> otherwise 
+1

빙고. 그게 내가 놓친 것입니다. 옵션 배열의 기본 키. 감사! – tangopianist

3
당신은 _POST에서 읽지 않습니다

$options = array('options' => array('default'=> 0)); 
$valid = filter_input(INPUT_GET, 'id', FILTER_VALIDATE_INT, $options); 

filter_input() 아래에 주어진 다음 디폴트 값은, 예를 할당 받게됩니다 값이 설정되지 않은 경우,이를 달성하기 위해 기본 옵션을 사용할 수 있습니다

/_GET/_COOKIE/_SERVER/_ENV

$opened_staff['id'] = 0; 
if($valid){ 
    $opened_staff['id'] = $_GET['id']; 
} 

일부 클래스를 사용하여이를 수행 할 수 있습니다.

여기
class RequestFilter{ 
public static function get_filter_int($id){ 

    $options = array('options' => array('default'=> 0)); 
    $valid = filter_input(INPUT_GET, $id, FILTER_VALIDATE_INT, $options); 

    if($valid){ 
    return $_GET[$id]; // Value will return 
    } 

    return $valid; // Default will return 
} 
} 

$opened_staff['id'] = RequestFilter::get_filter_int('id'); 

값이나 기본값을 반환합니다가, 여기가 제로 - [참고 이 그냥 예입니다].

+2

을 부여하거나, 내가 부족 이유가있다 PHP가 비교적 새로운 것임) – Levon

+0

if가 전혀 필요 없다. valid가 "true"이면 filter_input은 값을 반환하기 때문에'$ valid '와 같은'$ _GET [$ id]'를 반환한다. 유효한. 다른 경우에는'$ valid'를 반환합니다. 따라서'$ valid'와 항상 똑같은 결과를 얻을 수 있습니다. – PhoneixS