2012-09-17 4 views
0

하나는 기본값으로 설정되고 다른 하나는 사용자 입력에 의해 비교됩니다.PHP filter_var : 사용자가 올바른 데이터 유형을 제공하는지 확인하는 방법 - true 또는 false 전용

기본적으로 부울 값만 설정 했으므로 사용자가 문자열이나 숫자를 사용하지 않도록하고 싶습니다. 예를 들어 'truex'또는 '1'은 허용되지 않습니다.

다음은 코드 내 샘플,

$default = array(
    "randomise"  => false, 
    "id"   => null 
); 

$config = array(
    "randomise"  => truex 
); 

function process_array($default,$config) 
{ 
    # Loop the array. 
    foreach($default as $key => $value) 
    { 

     if ((filter_var($default[$key], FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE) === NULL) && (filter_var($config[$key], FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE) === NULL)) 
     { 
      return 'true or false only'; 
     } 


    } 

    # Return the result. 
    return $array; 
} 

print_r(process_array($default,$config)); 

하지만이 코드를 반환 'true 또는 단지 false'로 사용자가 올바른 데이터 유형을 제공하더라도. 이 문제를 어떻게 해결할 수 있습니까?

+1

is_bool() 함수 – Surace

답변

0

먼저 $config$default이라는 키가 포함되어 있는지 확인해야합니다. [Asside : $config이 사용자가 제공하는 경우 ... 사용자가 사용자가 아닌 다른 사용자를 제공 한 경우가 아니면 $config=array("randomize"=>"truex");을 의미 할 수도 있습니다.

두 번째 모두 은 부울이 아니기 때문에 작성한대로 항상 테스트에 실패합니다.

$default = array("randomise"=>false,"id"=>null); 
//Example input 
$config = array("randomise"=>"truex"); 

function process_array($default,$config) { 
    foreach($default as $key => $value) { 
     if (is_bool($default[$key]) 
      && isset($config[$key])) { 
     //Update the array with the filtered value 
     $config[$key]=filter_var($config[$key],FILTER_VALIDATE_BOOLEAN, 
            FILTER_NULL_ON_FAILURE); 
     if ($config[$key]===null) 
      return '$key can be true or false only'; 
     } 
     } 
    } 
    return $array; 
} 
print_r(process_array($default,$config)); 
+0

대답 당신에게 Rudu 감사 ...

그래서, 난 당신이 여기에서 무엇을하고 있는지 추측하기 위해 노력하고있어하지만 나는 이것이 당신이 원하는 생각! 예, 제가 원하는 것입니다. 고맙습니다! : D – laukok

+0

'사용자가 다른 개발자를 제공하지 않는 한'네, 다른 개발자를 의미합니다. – laukok