小编Dav*_*ery的帖子

启用严格类型提示后,array_map仍会转换类型

我在PHP 7.0.11,其中跨一个非常有趣的错误来declare(strict_types=1);启用不作array_map()也不array_walk()知道严格typehinting的.我在某处读到,通过启用严格类型,PHP在核心函数中也使用了严格的类型,但事实并非如此.看看这个示例代码,它应该抛出TypeError异常:

declare(strict_types=1);

$myArray = [12, 'string value', 'another string value', 5];

array_map('validateMyArrayValues', $myArray);

function validateMyArrayValues(string $item)
{
    var_dump($item);
}
Run Code Online (Sandbox Code Playgroud)

var_dump结果是:

test.php:13:
    string(2) "12"
test.php:13:
    string(12) "string value"
test.php:13:
    string(20) "another string value"
test.php:13:
    string(1) "5"
Run Code Online (Sandbox Code Playgroud)

所有整数值都被拼接成字符串,这显然是一个问题.这引出了一个问题,我应该declare(strict_types=1);放在一起并使用is_*函数并抛出异常吗?

php security

8
推荐指数
1
解决办法
298
查看次数

标签 统计

php ×1

security ×1