通过函数验证数组参数


validating array params via function

为什么下面的myFunction()验证给定参数为真?这是错误捕获的,因为myFunction通常应该接收整个数组作为参数,但在这种情况下,数组中只有一个特定的值("35")被传递给函数。 然而,它仍然被验证为真实。 我在这里错过了什么,因为我不希望参数验证为 true,它传递了一个字符串,而不是数组?

$myVar = array('id' => '35');
myFunction($myVar['id']);
function myFunction($params) {
    if (isset($params['id']) && !empty($params['id']) && $params['id'] == intval($params['id']) && $params['id'] > 0) {
        echo "id is valid<br>";
        echo "id = " . $params['id'] . "<br>";
        echo "params = " . $params . "<br>";
        print_r($params);
    } else {
        echo "id is invalid";
    }
}

输出:

id is valid
id = 3
params = 35
35

你在这里没有使用严格的比较$params['id'] == intval($params['id']) PHP 会处理这些类型。将其更改为 $params['id'] === intval($params['id']) .

或者使用 is_int() 函数。