2012-12-07 4 views
2

기본 형식을 함수 매개 변수 (또는 이와 동등하게 변수에 저장)에 PHP로 전달할 수 있습니까?기본 데이터 형식을 함수 매개 변수로 전달

function SomeFunc($DataType, $SomeOtherPara) 
{ 
} 

SomeFunc(int, "test1"); 
SomeFunc(bool, "test2"); 

사용 될 수 있습니다 :

//! Cast the input parameter into a data type, recursively. 
/*! 
    \param[in] $DataType   Data type, e.g. int, double, bool, string. 
    \param[in] $InputPara   Any input parameter. 
*/ 
function TypeJuggleRecursive($DataType, $InputPara) 
{ 
    if(is_array($InputPara)) 
    { 
     // Work on each array element recursively. 
     $ReturnPara = array(); 
     foreach($InputPara as $Key => $Value) 
     { 
      $ReturnPara[$Key] = TypeJuggleRecursive($DataType, $Value); 
     } 
     return $ReturnPara; 
    } 
    else 
    { 
     // Cast to data type. 
     return ($DataType)$InputPara; 
    } 
} 

TypeJuggleRecursive(bool, $_GET); 
TypeJuggleRecursive(int, $_POST); 
기본 유형으로 나는 int, bool, double, string는 등

구체적

, 나는이 같은 일을하고 싶은 말은

확실한 해결 방법은 대신 문자열을 사용하는 것입니다. 즉, string, "int""string"int 등,하지만 그건 바보 같습니다. 그것을 할 수있는 바보 같은 방법이라면

+0

내가 아는 것은 아닙니다. 흥미로운 문제. 나는 문자열이나 int (일부 식별자를 전환 할 때) 형식을 "멍청한"것처럼 보일지라도 PHP에서 일반적으로 사용되는 수백만 개의 데이터 유형이있는 것처럼 보이지 않습니다. –

+0

int, string 등을 사용할 수 있다고는 생각하지 않습니다. 키워드가 예약되어 있다고 가정하지만 그 점을 인용하지 마십시오. 심지어 gettype() 함수 (이것과 비슷한 것을 사용할 것입니다)는 문자열 형식의 형식을 반환합니다. http://php.net/manual/en/function.gettype.php – kennypu

+0

gettype은 원할 경우에만 유용합니다. 전달 된 var을 자체 유형으로 형변환합니다. 이 경우, 그는 어떤 $ SomeOtherPara가 될 것 인 것과는 다른 형식으로 AS를 캐스팅하려고합니다. –

답변

1

만 9 기본 데이터 유형이 있습니다. gettype을 사용할 수 있습니다 :

function my_cast($value, $new_type) { 
    switch(gettype($value)) { 
     case 'boolean': 
     case 'integer': 
     case 'double': 
     case 'string': 
      // do something 
      break; 
     case 'array': 
     case 'object': 
     case 'resource': 
      // do something else 
      break; 
     case 'NULL': 
     default: 
      // 'unknown type' 
    } 
} 

실제로 PHP에서 유형을 전달할 수 없습니다.

관련 문제