通过函数

时间:2016-01-17 22:06:17

标签: php

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

$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

1 个答案:

答案 0 :(得分:0)

你没有在这里使用strict comparison $params['id'] == intval($params['id']),而是在这些类型中使用PHP juggles。将其更改为$params['id'] === intval($params['id'])

或使用is_int()功能。