2

有什么方法可以将原始数据类型传递给 PHP 中的函数参数(或等效地,将其存储到变量中)?我所说的原始类型是指int, bool, double,string等。

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

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"for string"int"forint等,但这似乎很愚蠢。

4

2 回答 2

2

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

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

于 2012-12-07T01:02:48.627 回答
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 中实际传递类型。

于 2012-12-07T01:05:48.603 回答