将原始数据类型传递给函数参数

时间:2012-12-07 00:52:27

标签: php types parameters

有什么方法可以在PHP中将原始数据类型传递给函数参数(或等效地,将它存储到变量中)?原始类型我的意思是intbooldoublestring等。

更具体地说,我想做这样的事情:

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);

一个明显的解决方法是使用字符串,即"string" string"int" int等等,但这看起来很愚蠢。

2 个答案:

答案 0 :(得分:2)

如果这是一种愚蠢的方式,我认为settype()不会使用字符串:)

http://php.net/manual/en/function.settype.php

答案 1 :(得分: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中实际传递类型。