Strict_types不会影响array_walk

时间:2017-12-05 17:41:50

标签: php callback array-walk

在处理以下代码时,我注意到declare(strict_types=1)通过array_walk()

对回调函数的参数没有影响
<?php
declare(strict_types=1);

function myCallBack(int $value, $key) {

    echo $value;
}

function myFunc(int $value, $key) {
    echo $value;
}

$myArr = array("eggs" => 4, "Butter" => 4, "meat" => 4.5);

echo 'myCallBack..';
array_walk($myArr, 'myCallBack'); // Output: 444 

echo ' <br />myFunc..';
myFunc(4.2, 'eggs'); // Output:Fatal error: Uncaught TypeError: Argument 1 passed to myFunc() must be of the type integer

?>

我希望php抛出异常而不是444,因为$myArr中的[meat]值不是整数!

显然,php忽略了$myArr中[meat]出于某种原因float的事实!而不是像myFunc()所发生的那样抛出异常。

这是一个正常的PHP行为还是我错过了什么?。

0 个答案:

没有答案